def test_vote_model(self): vote = Vote() vote.object_id = self.article._get_pk_val() vote.content_type = ContentType.objects.get_for_model(self.article) #vote.content_object = ContentType.objects.get_for_model(self.article) vote.voter = self.user1 vote.vote = UPVOTE vote.save() vote_obj = Vote.objects.all()[0] self.assertEqual(vote_obj._get_pk_val(), vote._get_pk_val(), "Primary Keys do not match") self.assertEqual(vote.vote, vote_obj.vote, "Vote value does not match")
def test_vote_model(self): vote = Vote() vote.object_id = self.article._get_pk_val() vote.content_type = ContentType.objects.get_for_model(self.article) #vote.content_object = ContentType.objects.get_for_model(self.article) vote.voter = self.user1 vote.vote = UPVOTE vote.save() vote_obj = Vote.objects.all()[0] self.assertEqual(vote_obj._get_pk_val(), vote._get_pk_val(), "Primary Keys do not match") self.assertEqual(vote.vote, vote_obj.vote, "Vote value does not match")
def create(self, validated_data): print 'In create' vote = Vote() vote.voter = validated_data.get('voter') vote.vote = validated_data.get('vote') vote.content_type = validated_data.get('content_type') vote.object_id = validated_data.get('object_id') #Get row from contentType which has content_type content_object = ContentType.objects.get_for_id(vote.content_type.id) vote.content_object = content_object.model_class().objects.get(id=vote.object_id) """ Record a user's vote on a given object. Only allows a given user to vote once, though that vote may be changed. A zero vote indicates that any existing vote should be removed. """ if vote.vote not in (+1, 0, -1): raise ValueError('Invalid vote (must be +1/0/-1)') # First, try to fetch the instance of this row from DB # If that does not exist, then it is the first time we're creating it # If it does, then just update the previous one try: vote_obj = Vote.objects.get(voter=vote.voter, content_type=vote.content_type, object_id=vote.object_id) if vote == 0 and not ZERO_VOTES_ALLOWED: vote_obj.delete() else: vote_obj.vote = vote vote_obj.save() except ObjectDoesNotExist: #This is the first time we're creating it try: if not ZERO_VOTES_ALLOWED and vote == 0: # This shouldn't be happening actually return vote_obj = Vote.objects.create(voter=vote.voter, content_type=vote.content_type, object_id=vote.object_id, vote=vote.vote) except: print '{file}: something went wrong in creating a vote object at {line}'.format(file=str('__FILE__'), line=str('__LINE__')) raise ObjectDoesNotExist return vote_obj
def vote(request): if request.method == 'POST': vote = {'up': 1, 'down': -1}[request.POST.get('vote')] djct = int(request.POST.get('djct')) djoi = int(request.POST.get('djoi')) ct = get_object_or_404(ContentType, pk=djct) try: v = Vote.objects.get(user=request.user, content_type=ct, object_id=djoi) except Vote.DoesNotExist: v = Vote(user=request.user, content_type=ct, object_id=djoi) model = ct.model_class() obj = get_object_or_404(model, pk=djoi) if v.vote != vote: v.vote = vote v.save() if request.is_ajax(): return HttpResponse() else: return redirect(obj.get_absolute_url())