def get(self, object_id): args = self.parser.parse_args() osmanager = ObjectSubjectsManager(**args) somanager = SubjectObjectsManager(**args) votes = osmanager.scoredrange( object_id=object_id, offset=args['offset'], size=args['size'], min_vote=args['vote'] or '-inf', max_vote=args['vote'] or '+inf', reverse=args['sort'] == '-', ) if not votes: return [] reviews = osmanager.reviews(object_id, *[user_id for user_id, _ in votes]) reply = [ get_user_object_reply( object_id=object_id, user_id=user_id, vote=vote, when=somanager.score(user_id=user_id, object_id=object_id), review=reviews[user_id], ) for user_id, vote in votes ] return reply
def put(self, object_id, user_id): self.parser.add_argument('vote', type=int, required=True) self.parser.add_argument('review', type=text_type) args = self.parser.parse_args() osmanager = ObjectSubjectsManager(**args) somanager = SubjectObjectsManager(**args) self._perform_correction(object_id, user_id, args['vote'], args) osmanager.create(object_id=object_id, user_id=user_id, vote=args['vote'], review=args['review']) somanager.create(user_id=user_id, object_id=object_id, timestamp=time()) return get_user_object_reply( object_id=object_id, user_id=user_id, vote=osmanager.score(object_id=object_id, user_id=user_id), when=somanager.score(user_id=user_id, object_id=object_id), review=osmanager.review(object_id=object_id, user_id=user_id), )
def delete(self, object_id, user_id): args = self.parser.parse_args() self._perform_correction(object_id, user_id, 0, args) SubjectObjectsManager(**args).remove(user_id=user_id, object_id=object_id) ObjectSubjectsManager(**args).remove(object_id=object_id, user_id=user_id) return '', 204
def get(self, object_id, user_id): args = self.parser.parse_args() osmanager = ObjectSubjectsManager(**args) somanager = SubjectObjectsManager(**args) vote = osmanager.score(object_id=object_id, user_id=user_id) when = somanager.score(user_id=user_id, object_id=object_id) if not (vote and when): message = "No vote on {object_id} by {user_id}.".format( object_id=object_id, user_id=user_id) abort(404, message=message) return get_user_object_reply( object_id=object_id, user_id=user_id, vote=vote, when=when, review=osmanager.review(object_id=object_id, user_id=user_id), )
def get(self, object_id, user_id): args = self.parser.parse_args() osmanager = ObjectSubjectsManager(**args) somanager = SubjectObjectsManager(**args) vote = osmanager.score(object_id=object_id, user_id=user_id) when = somanager.score(user_id=user_id, object_id=object_id) if not (vote and when): message = "No vote on {object_id} by {user_id}.".format( object_id=object_id, user_id=user_id ) abort(404, message=message) return get_user_object_reply( object_id=object_id, user_id=user_id, vote=vote, when=when, review=osmanager.review(object_id=object_id, user_id=user_id), )
def get(self, user_id): args = self.parser.parse_args() osmanager = ObjectSubjectsManager(**args) somanager = SubjectObjectsManager(**args) votetimes = somanager.scoredrange( user_id=user_id, offset=args['offset'], size=args['size'], reverse=args['sort'] == '-', ) reply = [ get_user_object_reply( object_id=object_id, user_id=user_id, vote=osmanager.score(object_id=object_id, user_id=user_id), review=osmanager.review(object_id=object_id, user_id=user_id), when=when, ) for object_id, when in votetimes ] return reply