示例#1
0
    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)
示例#2
0
 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()
示例#3
0
 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()