def flag_list(self, request): """ Exposes an API endpoint to retrieve a list of flag. """ 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: flags, next_curs, more = Flag.query().fetch_page(limit, start_cursor=curs) else: flags, next_curs, more = Flag.query().fetch_page(limit) items = [entity.to_message() for entity in flags] if more: return FlagListMessage(flag_list=items, cursor=next_curs.urlsafe(), has_more=more) else: return FlagListMessage(flag_list=items, has_more=more)
def flag_delete(self, request): """ Exposes an API endpoint to delete an existing flag. """ 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: flag = Flag.get_by_id(request.id) if flag is None: raise endpoints.NotFoundException('No flag entity with the id "%s" exists.' % request.id) anno = flag.anno_key.get() flag.key.delete() anno.flag_count -= 1 anno.put() elif request.anno_id is not None: anno = Anno.get_by_id(request.anno_id) for key in Flag.query(Flag.anno_key == anno.key, Flag.creator == user.key).iter(keys_only=True): key.delete() anno.flag_count -= 1 anno.put() put_search_document(anno.generate_search_document(), SearchIndexName.ANNO) return message_types.VoidMessage()
def flag_delete(self, request): """ Exposes an API endpoint to delete an existing flag. """ 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: flag = Flag.get_by_id(request.id) if flag is None: raise endpoints.NotFoundException('No flag entity with the id "%s" exists.' % request.id) anno = flag.anno_key.get() flag.key.delete() anno.flag_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 Flag.query(Flag.anno_key == anno.key, Flag.creator == user.key).iter(keys_only=True): key.delete() anno.flag_count -= 1 anno.put() return message_types.VoidMessage()