Proper use of messages in BdA inscription
This commit is contained in:
parent
0666b5288f
commit
91fff8a11e
4 changed files with 34 additions and 21 deletions
|
@ -91,12 +91,6 @@ var django = {
|
|||
</script>
|
||||
|
||||
<h2 class="no-bottom-margin">Inscription au tirage au sort du BdA</h2>
|
||||
{% if success %}
|
||||
<p class="success table-top">Votre inscription a été mise à jour avec succès !</p>
|
||||
{% endif %}
|
||||
{% if stateerror %}
|
||||
<p class="error table-top">Impossible d'enregistrer vos modifications: vous avez apporté d'autres modifications entre temps</p>
|
||||
{% endif %}
|
||||
<form class="form-horizontal" id="bda_form" method="post" action="{% url 'bda-tirage-inscription' tirage.id %}">
|
||||
{% csrf_token %}
|
||||
{% include "bda/inscription-formset.html" %}
|
||||
|
@ -113,7 +107,7 @@ var django = {
|
|||
<input type="submit" class="btn btn-primary" value="Enregistrer" />
|
||||
</div>
|
||||
<p class="footnotes">
|
||||
<sup>1</sup>: 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.<br />
|
||||
<sup>1</sup>: 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.<br />
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
{% extends "base_title.html" %}
|
||||
|
||||
{% block realcontent %}
|
||||
<h1><strong>{{ error_title }}</strong></h1>
|
||||
<p>{{ error_description }}</p>
|
||||
{% if choices %}
|
||||
<h3>Vos vœux:</h3>
|
||||
<ol>
|
||||
|
|
45
bda/views.py
45
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):
|
||||
|
|
Loading…
Reference in a new issue