示例#1
0
文件: test_votes.py 项目: jdm/kitsune
    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)
示例#2
0
文件: test_votes.py 项目: jdm/kitsune
    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)
示例#3
0
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)
示例#4
0
文件: api.py 项目: yoyo2011/kitsune
    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})
示例#5
0
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())