From 91fff8a11e3a2e960520562e7cd3db19a28c3d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Sun, 29 Jan 2017 17:13:01 +0100 Subject: [PATCH] Proper use of messages in BdA inscription --- bda/templates/bda/inscription-tirage.html | 8 +--- .../bda/resume-inscription-tirage.html | 2 - bda/views.py | 45 ++++++++++++++----- .../{ => gestioncof}/registration_post.html | 0 4 files changed, 34 insertions(+), 21 deletions(-) rename gestioncof/templates/{ => gestioncof}/registration_post.html (100%) diff --git a/bda/templates/bda/inscription-tirage.html b/bda/templates/bda/inscription-tirage.html index d43059e7..2e8cb6cf 100644 --- a/bda/templates/bda/inscription-tirage.html +++ b/bda/templates/bda/inscription-tirage.html @@ -91,12 +91,6 @@ var django = {

Inscription au tirage au sort du BdA

- {% if success %} -

Votre inscription a été mise à jour avec succès !

- {% endif %} - {% if stateerror %} -

Impossible d'enregistrer vos modifications: vous avez apporté d'autres modifications entre temps

- {% endif %}
{% csrf_token %} {% include "bda/inscription-formset.html" %} @@ -113,7 +107,7 @@ var django = {

- 1: cette liste de vœu est ordonnée (du plus important au moins important), pour ajuster la priorité vous pouvez déplacer chaque vœu.
+ 1: cette liste de vœux est ordonnée (du plus important au moins important), pour ajuster la priorité vous pouvez déplacer chaque vœu.

diff --git a/bda/templates/bda/resume-inscription-tirage.html b/bda/templates/bda/resume-inscription-tirage.html index 2e0531ca..0ad7ec0e 100644 --- a/bda/templates/bda/resume-inscription-tirage.html +++ b/bda/templates/bda/resume-inscription-tirage.html @@ -1,8 +1,6 @@ {% extends "base_title.html" %} {% block realcontent %} -

{{ error_title }}

-

{{ error_description }}

{% if choices %}

Vos vœux:

    diff --git a/bda/views.py b/bda/views.py index 3c448f34..ddd2fc90 100644 --- a/bda/views.py +++ b/bda/views.py @@ -8,6 +8,7 @@ from datetime import timedelta from django.shortcuts import render, get_object_or_404 from django.contrib.auth.decorators import login_required +from django.contrib import messages from django.db import models, transaction from django.db.models import Count, Q, Sum from django.core import serializers, mail @@ -17,7 +18,7 @@ from django.core.urlresolvers import reverse from django.conf import settings from django.core.mail import send_mail from django.template import loader -from django.utils import timezone +from django.utils import timezone, formats from django.views.generic.list import ListView from gestioncof.decorators import cof_required, buro_required @@ -121,23 +122,37 @@ def places(request, tirage_id): @cof_required def inscription(request, tirage_id): + """ + Vue d'inscription à un tirage BdA. + - On vérifie qu'on se situe bien entre la date d'ouverture et la date de + fermeture des inscriptions. + - On vérifie que l'inscription n'a pas été modifiée entre le moment où le + client demande le formulaire et le moment où il soumet son inscription + (autre session par exemple). + """ tirage = get_object_or_404(Tirage, id=tirage_id) if timezone.now() < tirage.ouverture: - error_desc = tirage.ouverture.strftime('Ouverture le %d %b %Y à %H:%M') - return render(request, 'bda/resume-inscription-tirage.html', - {"error_title": "Le tirage n'est pas encore ouvert !", - "error_description": error_desc}) + # Le tirage n'est pas encore ouvert. + opening = formats.localize( + timezone.template_localtime(tirage.ouverture)) + messages.error(request, "Le tirage n'est pas encore ouvert : " + "ouverture le {:s}".format(opening)) + return render(request, 'bda/resume-inscription-tirage.html', {}) if timezone.now() > tirage.fermeture: + # Le tirage est fermé. participant, created = Participant.objects.get_or_create( user=request.user, tirage=tirage) choices = participant.choixspectacle_set.order_by("priority").all() + messages.error(request, + " C'est fini : tirage au sort dans la journée !") return render(request, "bda/resume-inscription-tirage.html", - {"error_title": "C'est fini !", - "error_description": - "Tirage au sort dans la journée !", - "choices": choices}) + {"choices": choices}) def formfield_callback(f, **kwargs): + """ + Fonction utilisée par inlineformset_factory ci dessous. + Restreint les spectacles proposés aux spectacles du bo tirage. + """ if f.name == "spectacle": kwargs['queryset'] = tirage.spectacle_set return f.formfield(**kwargs) @@ -170,13 +185,19 @@ def inscription(request, tirage_id): total_price += choice.spectacle.price if choice.double: total_price += choice.spectacle.price + # Messages + if success: + messages.success(request, "Votre inscription a été mise à jour avec " + "succès !") + if stateerror: + messages.error(request, "Impossible d'enregistrer vos modifications " + ": vous avez apporté d'autres modifications " + "entre temps.") return render(request, "bda/inscription-tirage.html", {"formset": formset, - "success": success, "total_price": total_price, "dbstate": dbstate, - 'tirage': tirage, - "stateerror": stateerror}) + 'tirage': tirage}) def do_tirage(request, tirage_id): diff --git a/gestioncof/templates/registration_post.html b/gestioncof/templates/gestioncof/registration_post.html similarity index 100% rename from gestioncof/templates/registration_post.html rename to gestioncof/templates/gestioncof/registration_post.html