forked from DGNum/gestioCOF
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>
|
</script>
|
||||||
|
|
||||||
<h2 class="no-bottom-margin">Inscription au tirage au sort du BdA</h2>
|
<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 %}">
|
<form class="form-horizontal" id="bda_form" method="post" action="{% url 'bda-tirage-inscription' tirage.id %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{% include "bda/inscription-formset.html" %}
|
{% include "bda/inscription-formset.html" %}
|
||||||
|
@ -113,7 +107,7 @@ var django = {
|
||||||
<input type="submit" class="btn btn-primary" value="Enregistrer" />
|
<input type="submit" class="btn btn-primary" value="Enregistrer" />
|
||||||
</div>
|
</div>
|
||||||
<p class="footnotes">
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{% extends "base_title.html" %}
|
{% extends "base_title.html" %}
|
||||||
|
|
||||||
{% block realcontent %}
|
{% block realcontent %}
|
||||||
<h1><strong>{{ error_title }}</strong></h1>
|
|
||||||
<p>{{ error_description }}</p>
|
|
||||||
{% if choices %}
|
{% if choices %}
|
||||||
<h3>Vos vœux:</h3>
|
<h3>Vos vœux:</h3>
|
||||||
<ol>
|
<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.shortcuts import render, get_object_or_404
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib import messages
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.db.models import Count, Q, Sum
|
from django.db.models import Count, Q, Sum
|
||||||
from django.core import serializers, mail
|
from django.core import serializers, mail
|
||||||
|
@ -17,7 +18,7 @@ from django.core.urlresolvers import reverse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.mail import send_mail
|
from django.core.mail import send_mail
|
||||||
from django.template import loader
|
from django.template import loader
|
||||||
from django.utils import timezone
|
from django.utils import timezone, formats
|
||||||
from django.views.generic.list import ListView
|
from django.views.generic.list import ListView
|
||||||
|
|
||||||
from gestioncof.decorators import cof_required, buro_required
|
from gestioncof.decorators import cof_required, buro_required
|
||||||
|
@ -121,23 +122,37 @@ def places(request, tirage_id):
|
||||||
|
|
||||||
@cof_required
|
@cof_required
|
||||||
def inscription(request, tirage_id):
|
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)
|
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||||
if timezone.now() < tirage.ouverture:
|
if timezone.now() < tirage.ouverture:
|
||||||
error_desc = tirage.ouverture.strftime('Ouverture le %d %b %Y à %H:%M')
|
# Le tirage n'est pas encore ouvert.
|
||||||
return render(request, 'bda/resume-inscription-tirage.html',
|
opening = formats.localize(
|
||||||
{"error_title": "Le tirage n'est pas encore ouvert !",
|
timezone.template_localtime(tirage.ouverture))
|
||||||
"error_description": error_desc})
|
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:
|
if timezone.now() > tirage.fermeture:
|
||||||
|
# Le tirage est fermé.
|
||||||
participant, created = Participant.objects.get_or_create(
|
participant, created = Participant.objects.get_or_create(
|
||||||
user=request.user, tirage=tirage)
|
user=request.user, tirage=tirage)
|
||||||
choices = participant.choixspectacle_set.order_by("priority").all()
|
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",
|
return render(request, "bda/resume-inscription-tirage.html",
|
||||||
{"error_title": "C'est fini !",
|
{"choices": choices})
|
||||||
"error_description":
|
|
||||||
"Tirage au sort dans la journée !",
|
|
||||||
"choices": choices})
|
|
||||||
|
|
||||||
def formfield_callback(f, **kwargs):
|
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":
|
if f.name == "spectacle":
|
||||||
kwargs['queryset'] = tirage.spectacle_set
|
kwargs['queryset'] = tirage.spectacle_set
|
||||||
return f.formfield(**kwargs)
|
return f.formfield(**kwargs)
|
||||||
|
@ -170,13 +185,19 @@ def inscription(request, tirage_id):
|
||||||
total_price += choice.spectacle.price
|
total_price += choice.spectacle.price
|
||||||
if choice.double:
|
if choice.double:
|
||||||
total_price += choice.spectacle.price
|
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",
|
return render(request, "bda/inscription-tirage.html",
|
||||||
{"formset": formset,
|
{"formset": formset,
|
||||||
"success": success,
|
|
||||||
"total_price": total_price,
|
"total_price": total_price,
|
||||||
"dbstate": dbstate,
|
"dbstate": dbstate,
|
||||||
'tirage': tirage,
|
'tirage': tirage})
|
||||||
"stateerror": stateerror})
|
|
||||||
|
|
||||||
|
|
||||||
def do_tirage(request, tirage_id):
|
def do_tirage(request, tirage_id):
|
||||||
|
|
Loading…
Reference in a new issue