def test_vote_updates_count(self): q = Question.objects.all()[0] eq_(0, q.num_votes_past_week) vote = QuestionVote(question=q, anonymous_id="abc123") vote.save() q = Question.uncached.get(id=q.id) eq_(1, q.num_votes_past_week)
def test_cron_updates_counts(self): q = Question.objects.all()[0] eq_(0, q.num_votes_past_week) vote = QuestionVote(question=q, anonymous_id="abc123") vote.save() q.num_votes_past_week = 0 q.save() update_weekly_votes() q = Question.objects.get(pk=q.pk) eq_(1, q.num_votes_past_week)
def questionvote(**kwargs): defaults = dict(created=datetime.now()) defaults.update(kwargs) if 'question' not in kwargs and 'queation_id' not in kwargs: defaults['question'] = question(save=True) if 'creator' not in kwargs and 'creator_id' not in kwargs: defaults['creator'] = profile().user return QuestionVote(**defaults)
def helpful(self, request, pk=None): question = self.get_object() if not question.editable: raise GenericAPIException(403, 'Question not editable') if question.has_voted(request): raise GenericAPIException(409, 'Cannot vote twice') QuestionVote(question=question, creator=request.user).save() num_votes = QuestionVote.objects.filter(question=question).count() return Response({'num_votes': num_votes})
def question_vote(request, question_id): """I have this problem too.""" question = get_object_or_404(Question, pk=question_id, is_spam=False) if not question.editable: raise PermissionDenied if not question.has_voted(request): vote = QuestionVote(question=question) if request.user.is_authenticated: vote.creator = request.user else: vote.anonymous_id = request.anonymous.anonymous_id if not request.limited: vote.save() if "referrer" in request.GET: referrer = request.GET.get("referrer") vote.add_metadata("referrer", referrer) if referrer == "search" and "query" in request.GET: vote.add_metadata("query", request.GET.get("query")) ua = request.META.get("HTTP_USER_AGENT") if ua: vote.add_metadata("ua", ua) if request.is_ajax(): tmpl = "questions/includes/question_vote_thanks.html" form = _init_watch_form(request) html = render_to_string( tmpl, { "question": question, "user": request.user, "watch_form": form, }, ) return HttpResponse( json.dumps({ "html": html, "ignored": request.limited })) return HttpResponseRedirect(question.get_absolute_url())