示例#1
0
def do_vote(user, content, vote_request):
    try:
        content_type = ContentType.objects.get_for_model(content)
        old_vote = Vote.objects.get(user=user,
                                    object_id=content.id,
                                    content_type=content_type)
        vote_was_up = old_vote.isVoteUp
        old_vote.delete()
        new_vote = False
    except:
        new_vote = True

    vote = Vote(user=user, content=content)

    if new_vote:
        if vote_request == "up":
            vote.isVoteUp = True
            vote.save()
            return 1
        elif vote_request == "down":
            vote.isVoteUp = False
            vote.save()
            return -1

    elif not new_vote:
        if vote_request == "up":
            if vote_was_up:
                return 0
            else:
                vote.isVoteUp = True
                vote.save()
                return 1
        elif vote_request == "down":
            if not vote_was_up:
                return 0
            else:
                vote.isVoteUp = False
                vote.save()
                return -1
    else:
        raise Exception("Unknown vote request " + str(vote_request))