diff --git a/wagtailpolls/templatetags/wagtailpolls_tags.py b/wagtailpolls/templatetags/wagtailpolls_tags.py index 0a0d881..3fc1a86 100644 --- a/wagtailpolls/templatetags/wagtailpolls_tags.py +++ b/wagtailpolls/templatetags/wagtailpolls_tags.py @@ -18,4 +18,6 @@ def querystring(context, **kwargs): @register.simple_tag(takes_context=True) def vote(context, poll): + if poll is None: + return reverse('wagtailpolls_vote', kwargs={'poll_pk': None}) return reverse('wagtailpolls_vote', kwargs={'poll_pk': poll.pk}) diff --git a/wagtailpolls/views/vote.py b/wagtailpolls/views/vote.py index df5aacd..16eafc8 100644 --- a/wagtailpolls/views/vote.py +++ b/wagtailpolls/views/vote.py @@ -1,8 +1,9 @@ from django.contrib.auth.decorators import permission_required -from django.shortcuts import get_object_or_404 from django.http import HttpResponse, JsonResponse -from ..models import Poll, Vote +from django.shortcuts import get_object_or_404 + from ..forms import VoteForm +from ..models import Poll, Vote def vote_data(poll): @@ -22,6 +23,12 @@ def vote_data(poll): @permission_required('wagtailadmin.access_admin') def vote(request, poll_pk): + try: + int(poll_pk) + + except ValueError: + return HttpResponse("

Oops, there is no poll to vote on!

", status=500) + poll = get_object_or_404(Poll, pk=poll_pk) form = VoteForm(data=request.POST, poll=poll, request=request)