forked from DGNum/gestioCOF
Merge branch 'master' of https://git.eleves.ens.fr/cof-geek/gestioCOF into Aufinal/bda_revente
This commit is contained in:
commit
dbd81ac625
83 changed files with 12870 additions and 791 deletions
83
bda/views.py
83
bda/views.py
|
@ -12,13 +12,13 @@ from django.db import models
|
|||
from django.db.models import Count
|
||||
from django.core import serializers
|
||||
from django.forms.models import inlineformset_factory
|
||||
from django.http import HttpResponseBadRequest
|
||||
import hashlib
|
||||
|
||||
from django.core.mail import send_mail
|
||||
from django.utils import timezone
|
||||
from django.views.generic.list import ListView
|
||||
|
||||
from datetime import timedelta
|
||||
import time
|
||||
|
||||
from gestioncof.decorators import cof_required, buro_required
|
||||
|
@ -109,37 +109,11 @@ def places(request, tirage_id):
|
|||
"warning": warning})
|
||||
|
||||
|
||||
@cof_required
|
||||
def places_ics(request, tirage_id):
|
||||
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||
participant, created = Participant.objects.get_or_create(
|
||||
user=request.user, tirage=tirage)
|
||||
places = participant.attribution_set.order_by(
|
||||
"spectacle__date", "spectacle").all()
|
||||
filtered_places = []
|
||||
places_dict = {}
|
||||
spectacles = []
|
||||
for place in places:
|
||||
if place.spectacle in spectacles:
|
||||
places_dict[place.spectacle].double = True
|
||||
else:
|
||||
place.double = False
|
||||
place.spectacle.dtend = place.spectacle.date \
|
||||
+ timedelta(seconds=7200)
|
||||
places_dict[place.spectacle] = place
|
||||
spectacles.append(place.spectacle)
|
||||
filtered_places.append(place)
|
||||
return render(request, "resume_places.ics",
|
||||
{"participant": participant,
|
||||
"places": filtered_places}, content_type="text/calendar")
|
||||
|
||||
|
||||
@cof_required
|
||||
def inscription(request, tirage_id):
|
||||
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||
if timezone.now() < tirage.ouverture:
|
||||
error_desc = "Ouverture le %s" % (
|
||||
tirage.ouverture.strftime('%d %b %Y à %H:%M'))
|
||||
error_desc = tirage.ouverture.strftime('Ouverture le %d %b %Y à %H:%M')
|
||||
return render(request, 'resume_inscription.html',
|
||||
{"error_title": "Le tirage n'est pas encore ouvert !",
|
||||
"error_description": error_desc})
|
||||
|
@ -200,8 +174,6 @@ def do_tirage(request, tirage_id):
|
|||
form = TokenForm(request.POST)
|
||||
if not form.is_valid():
|
||||
return tirage(request, tirage_id)
|
||||
tirage_elt.token = form.cleaned_data['token']
|
||||
tirage_elt.save()
|
||||
start = time.time()
|
||||
data = {}
|
||||
shows = tirage_elt.spectacle_set.select_related().all()
|
||||
|
@ -252,16 +224,16 @@ def do_tirage(request, tirage_id):
|
|||
members2 = members2.items()
|
||||
data["members2"] = sorted(members2, key=lambda m: m[0].user.last_name)
|
||||
# À partir d'ici, le tirage devient effectif
|
||||
# FIXME: Établir les conditions de validations (formulaire ?)
|
||||
# cf. issue #32
|
||||
if True:
|
||||
Attribution.objects.filter(
|
||||
spectacle__tirage=tirage_elt
|
||||
).delete()
|
||||
for (show, members, _) in results:
|
||||
for (member, _, _, _) in members:
|
||||
attrib = Attribution(spectacle=show, participant=member)
|
||||
attrib.save()
|
||||
Attribution.objects.filter(spectacle__tirage=tirage_elt).delete()
|
||||
tirage_elt.tokens += "%s\n\"\"\"%s\"\"\"\n" % (
|
||||
timezone.now().strftime("%y-%m-%d %H:%M:%S"),
|
||||
form.cleaned_data['token'])
|
||||
tirage_elt.enable_do_tirage = False
|
||||
tirage_elt.save()
|
||||
Attribution.objects.bulk_create([
|
||||
Attribution(spectacle=show, participant=member)
|
||||
for show, members, _ in results
|
||||
for member, _, _, _ in members])
|
||||
return render(request, "bda-attrib-extra.html", data)
|
||||
else:
|
||||
return render(request, "bda-attrib.html", data)
|
||||
|
@ -269,6 +241,10 @@ def do_tirage(request, tirage_id):
|
|||
|
||||
@buro_required
|
||||
def tirage(request, tirage_id):
|
||||
tirage_elt = get_object_or_404(Tirage, id=tirage_id)
|
||||
if not (tirage_elt.enable_do_tirage
|
||||
and tirage_elt.fermeture < timezone.now()):
|
||||
return render(request, "tirage-failed.html", {'tirage': tirage_elt})
|
||||
if request.POST:
|
||||
form = TokenForm(request.POST)
|
||||
if form.is_valid():
|
||||
|
@ -442,17 +418,6 @@ def unpaid(request, tirage_id):
|
|||
return render(request, "bda-unpaid.html", {"unpaid": unpaid})
|
||||
|
||||
|
||||
@buro_required
|
||||
def liste_spectacles_ics(request, tirage_id):
|
||||
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||
spectacles = tirage.spectacle_set.order_by("date").all()
|
||||
for spectacle in spectacles:
|
||||
spectacle.dtend = spectacle.date + timedelta(seconds=7200)
|
||||
return render(request, "liste_spectacles.ics",
|
||||
{"spectacles": spectacles, "tirage": tirage},
|
||||
content_type="text/calendar")
|
||||
|
||||
|
||||
@buro_required
|
||||
def send_rappel(request, spectacle_id):
|
||||
show = get_object_or_404(Spectacle, id=spectacle_id)
|
||||
|
@ -479,3 +444,19 @@ def send_rappel(request, spectacle_id):
|
|||
else:
|
||||
ctxt['sent'] = False
|
||||
return render(request, "mails-rappel.html", ctxt)
|
||||
|
||||
|
||||
def descriptions_spectacles(request, tirage_id):
|
||||
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||
shows_qs = tirage.spectacle_set
|
||||
category_name = request.GET.get('category', '')
|
||||
location_id = request.GET.get('location', '')
|
||||
if category_name:
|
||||
shows_qs = shows_qs.filter(category__name=category_name)
|
||||
if location_id:
|
||||
try:
|
||||
shows_qs = shows_qs.filter(location__id=int(location_id))
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest(
|
||||
"La variable GET 'location' doit contenir un entier")
|
||||
return render(request, 'descriptions.html', {'shows': shows_qs.all()})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue