def vote_list(self, request): """ Exposes an API endpoint to retrieve a list of vote. """ limit = 10 if request.limit is not None: limit = request.limit curs = None if request.cursor is not None: try: curs = Cursor(urlsafe=request.cursor) except BadValueError: raise endpoints.BadRequestException('Invalid cursor %s.' % request.cursor) if curs is not None: votes, next_curs, more = Vote.query().fetch_page(limit, start_cursor=curs) else: votes, next_curs, more = Vote.query().fetch_page(limit) items = [entity.to_message() for entity in votes] if more: return VoteListMessage(vote_list=items, cursor=next_curs.urlsafe(), has_more=more) else: return VoteListMessage(vote_list=items, has_more=more)
def vote_delete(self, request): """ Exposes an API endpoint to delete an existing vote. """ if request.id is None and request.anno_id is None: raise endpoints.BadRequestException('id or anno_id field is required.') if request.id is not None: vote = Vote.get_by_id(request.id) if vote is None: raise endpoints.NotFoundException('No vote entity with the id "%s" exists.' % request.id) anno = vote.anno_key.get() vote.key.delete() anno.vote_count -= 1 anno.put() elif request.anno_id is not None: user = User.find_user_by_email(get_endpoints_current_user().email()) anno = Anno.get_by_id(request.anno_id) for key in Vote.query(Vote.anno_key == anno.key, Vote.creator == user.key).iter(keys_only=True): key.delete() anno.vote_count -= 1 anno.put() return message_types.VoidMessage()
def vote_delete(self, request): """ Exposes an API endpoint to delete an existing vote. """ user = auth_user(self.request_state.headers) anno = None if request.id is None and request.anno_id is None: raise endpoints.BadRequestException('id or anno_id field is required.') if request.id is not None: vote = Vote.get_by_id(request.id) if vote is None: raise endpoints.NotFoundException('No vote entity with the id "%s" exists.' % request.id) anno = vote.anno_key.get() vote.key.delete() anno.vote_count -= 1 anno.put() elif request.anno_id is not None: anno = Anno.get_by_id(request.anno_id) for key in Vote.query(Vote.anno_key == anno.key, Vote.creator == user.key).iter(keys_only=True): key.delete() anno.vote_count -= 1 anno.put() put_search_document(anno.generate_search_document(), SearchIndexName.ANNO) return message_types.VoidMessage()