def delete(comment_id): comment = Comment.get(comment_id) if not comment: return custom_response({'error': 'comment not found'}, 404) data = comment_schema.dump(comment).data if data.get('owner_id') != g.user.get('uid'): return custom_response({'error': 'permission denied'}, 400) comment.delete() return custom_response({'message': 'deleted'}, 204)
def update(comment_id): req_data = request.get_json() comment = Comment.get(comment_id) if not comment: return custom_response({'error': 'comment not found'}, 404) data = comment_schema.dump(comment).data if data.get('owner_id') != g.user.get('uid'): return custom_response({'error': 'permission denied'}, 400) data, error = comment_schema.load(req_data, partial=True) if error: return custom_response(error, 400) comment.update(data) data = comment_schema.dump(comment).data return custom_response(data, 200)
def vote(comment_id): comment = Comment.get(comment_id) if not comment: return custom_response({'error': 'comment not found'}, 404) voter_id = g.user.get('uid') voter = User.get(voter_id) vote_type = request.get_json().get('type') valid_vote_types = ['like', 'dislike', 'meh'] if not vote_type or vote_type not in valid_vote_types : return custom_response({'error': 'invalid vote'}, 404) existing_vote = comment.voters.relationship(voter) if existing_vote: existing_vote.type = vote_type existing_vote.save() else: comment.voters.connect(voter, {'type': vote_type}) data = comment_schema.dump(comment).data return custom_response(data, 201)
def get_one(comment_id): comment = Comment.get(comment_id) if not comment: return custom_response({'error': 'comment not found'}, 404) data = comment_schema.dump(comment).data return custom_response(data, 200)