From 3a062210d8eac6eed590966f2e7ce9a69891fadc Mon Sep 17 00:00:00 2001 From: christophe siraut Date: Fri, 25 Jun 2010 00:36:26 +0200 Subject: [PATCH] "Forget me": added clear_cookie link for anonymous users --- sondage/userviews.py | 6 ++++++ sondage/views.py | 13 +++++++------ templates/base.html | 2 +- templates/sondage/poll_detail.html | 6 ++++++ urls.py | 2 +- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/sondage/userviews.py b/sondage/userviews.py index 0f2d048..105d9c4 100644 --- a/sondage/userviews.py +++ b/sondage/userviews.py @@ -3,6 +3,7 @@ from django.contrib.auth.forms import UserCreationForm from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.template import RequestContext +from django.core.urlresolvers import reverse def register(request): if request.method == 'POST': @@ -16,3 +17,8 @@ def register(request): 'form': form, }, context_instance=RequestContext(request)) +def clear_cookie(request, poll_id): + request.session.clear() + return HttpResponseRedirect(reverse('nuages.sondage.views.vote', args=(poll_id,))) + + diff --git a/sondage/views.py b/sondage/views.py index c651d8d..b96ebfb 100644 --- a/sondage/views.py +++ b/sondage/views.py @@ -1,4 +1,4 @@ -# Here are the views for nuage.sondage +# Here are the views for nuages.sondage import datetime from django.http import HttpResponse, HttpResponseRedirect @@ -121,8 +121,6 @@ def editchoices(request, poll_id): vforms = OrderedItemFormset(instance=poll) return render_to_response('sondage/choice_form.html', {'object': poll, 'vforms': vforms, 'language_code': language_code,}, context_instance=RequestContext(request)) - - def make_buletin_form(poll, **kwargs): return [ [VoteForm(prefix=choice) ] for choice in Choice.objects.filter(poll=poll.id) ] @@ -131,6 +129,7 @@ def vote(request, poll_id): error_message = None poll = get_object_or_404(Poll.objects.all(),id=poll_id) + has_voted = False if request.method == 'POST': @@ -183,6 +182,7 @@ def vote(request, poll_id): key = 'has_voted-' + poll.id request.session[key] = True # This writes cookie request.session['name'] = voter # This writes cookie + has_voted = True # Used to show "Forget me" else: old = Vote.objects.get(choice=choice,bulletin=bulletin) @@ -220,7 +220,7 @@ def vote(request, poll_id): voter = str(request.user) try: bulletin = Bulletin.objects.get(poll=poll,voter=voter) - error_message = " you have voted." + error_message = " You have voted." diff = len(vforms) - len(Vote.objects.filter(bulletin=bulletin)) if diff == 0: """ @@ -237,11 +237,12 @@ def vote(request, poll_id): error_message = "Login let you modify your vote anytime." key = 'has_voted-' + poll.id if request.session.get(key, False): + has_voted = True # Used to show "Forget me" voter = request.session.get('name') #error_message = 'Modify your vote? (clear cookie if you are not ' + voter + ')' try: bulletin = Bulletin.objects.get(poll=poll,voter=voter) - error_message = ' you have voted, clear cookie if you are not ' + voter + error_message = voter + ' has voted' diff = len(vforms) - len(Vote.objects.filter(bulletin=bulletin)) if diff == 0: """ @@ -257,6 +258,6 @@ def vote(request, poll_id): form = BulletinForm(instance=poll,initial={'voter': voter}) #form = BulletinForm(instance=poll) current_site = settings.SITE + poll.id - return render_to_response('sondage/poll_detail.html', {'object': poll, 'form': form, 'vforms':vforms, 'error_message':error_message, 'current_site': current_site}, context_instance=RequestContext(request)) + return render_to_response('sondage/poll_detail.html', {'object': poll, 'form': form, 'vforms':vforms, 'error_message':error_message, 'has_voted': has_voted, 'current_site': current_site}, context_instance=RequestContext(request)) diff --git a/templates/base.html b/templates/base.html index 811224b..c296f67 100644 --- a/templates/base.html +++ b/templates/base.html @@ -27,7 +27,7 @@ Logout {% else %} Login - {% endif %}  + {% endif %} {% block menu %}{% endblock %} diff --git a/templates/sondage/poll_detail.html b/templates/sondage/poll_detail.html index 7e83e76..0ebccf8 100644 --- a/templates/sondage/poll_detail.html +++ b/templates/sondage/poll_detail.html @@ -1,6 +1,12 @@ {% extends "base.html" %} {% load i18n %} +{% block menu %} + {% if has_voted %} + Forget me + {% endif %} +{% endblock %} + {% block title %}nuages - {{object}}{% endblock %} {% block chapeau %} diff --git a/urls.py b/urls.py index cc39b08..a27169b 100644 --- a/urls.py +++ b/urls.py @@ -44,7 +44,7 @@ urlpatterns = patterns('', (r'^user/success$', 'django.views.generic.simple.direct_to_template', {'template': 'registration/success.html'}), (r'^i18n/', include('django.conf.urls.i18n')), - + (r'^(?P\w{4})/clear/', 'nuages.sondage.userviews.clear_cookie'), ) -- GitLab