Beispiel #1
0
    def handle_POST(cls, request, context):
        form = context['form']

        if request.POST.get('csrf') != request.session['feature_vote:csrf']:
            return HttpResponseForbidden()

        if 'vote_up' in request.POST or 'vote_down' in request.POST:
            feature = get_object_or_404(Feature, id = request.POST.get('id', 0))
            previous_vote = request.session['feature_vote:votes'].get(feature.id, 0)
            vote = previous_vote + (1 if 'vote_up' in request.POST else -1)
            vote = min(max(-1, vote), 1)
            request.session['feature_vote:votes'][feature.id] = vote
            request.session.modified = True

            feature.down_vote += cls.vote_transitions[(previous_vote, vote)][0]
            feature.up_vote   += cls.vote_transitions[(previous_vote, vote)][1]

            feature.save()

            if request.POST.get('return_url', '').startswith('/'):
                return HttpResponseSeeOther(request.POST['return_url'])
            else:
                return HttpResponseSeeOther(reverse('feature_vote:index'))

        if form.is_valid():
            form.save()

            send_email(request, {
                'name': form.cleaned_data['user_name'],
                'email': form.cleaned_data['user_email'],
                'title': form.cleaned_data['title'],
                'description': form.cleaned_data['description'],
                'feature': form.instance,
            }, 'feature_vote/feature_create.eml', cls)
            
            return HttpResponseSeeOther(reverse('feature_vote:index') + '?submitted=true')
        else:
            return cls.handle_GET(request, context)
Beispiel #2
0
    def handle_POST(cls, request, context):
        form = context["feedback_form"]
        if form.is_valid():
            # Send an e-mail to the managers notifying of feedback.
            email = send_email(
                request,
                {
                    "email": form.cleaned_data["email"],
                    "referer": request.POST.get("referer", ""),
                    "body": form.cleaned_data["body"],
                },
                "feedback/email.txt",
                cls,
            )

            qs = urllib.urlencode({"sent": "true", "referer": request.POST.get("referer", "")})

            return HttpResponseRedirect("%s?%s" % (reverse("feedback:index"), qs))

        else:
            return cls.handle_GET(request, context)