Example #1
0
def vote(user_id, take_id):
    user = User.query.filter_by(id=user_id).first()
    if user is None:
        return failure_response("User not found")
    take = Take.query.filter_by(id=take_id).first()
    if take is None:
        return failure_response("Take not found")
    if user_id == take.user_id:
        return failure_response("User cannot vote on their own take")
    for vote in Vote.query.filter_by(user_id=user_id).all():
        if vote.take_id == take_id:
            return failure_response("User already voted")
    body = json.loads(request.data)
    value = body.get("value")
    if value is None:
        return failure_response("User must provide a vote value")
    new_vote = Vote(value=body.get("value"), take=take)
    db.session.add(new_vote)
    take.votes.append(new_vote)
    user.voted.append(new_vote)
    db.session.commit()
    return success_response(new_vote.serialize())