X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5d4057337796667537724950ed99aafe3edaa9d9..9203d27cee887569ad260dd91d798df68a1d3ada:/apps/polls/views.py diff --git a/apps/polls/views.py b/apps/polls/views.py new file mode 100644 index 000000000..ac1c36028 --- /dev/null +++ b/apps/polls/views.py @@ -0,0 +1,34 @@ +from django.views.decorators.http import require_http_methods +from django.shortcuts import get_object_or_404, redirect, render_to_response +from django.core.urlresolvers import reverse +from django.template import RequestContext + +from models import Poll, PollItem +from forms import PollForm + + +@require_http_methods(['GET', 'POST']) +def poll(request, slug): + + poll = get_object_or_404(Poll, slug = slug) + + if request.method == 'POST': + redirect_to = reverse('poll', args = [slug]) + form = PollForm(request.POST, poll = poll) + if form.is_valid(): + if not poll.voted(request.session): + try: + poll_item = PollItem.objects.filter(pk = form.cleaned_data['vote'], poll = poll).get() + except PollItem.DoesNotExist: + pass + else: + poll_item.vote(request.session) + return redirect(redirect_to) + elif request.method == 'GET': + context = RequestContext(request) + context['poll'] = poll + context['voted_already'] = poll.voted(request.session) + return render_to_response('polls/poll.html', context) + + + \ No newline at end of file