Factorise les réponses aux événements

This commit is contained in:
Martin Pépin 2017-01-14 10:24:38 +01:00
parent 9b04266305
commit 1841851cc9
2 changed files with 43 additions and 73 deletions

View file

@ -11,9 +11,9 @@ urlpatterns = [
url(r'^resend/(?P<id>\d+)$', views.resend, name='calendrier-resend'),
url(r'^changename/?$', views.changename, name='change-doodle-name'),
url(r'(?P<id>\d+)/reponse/?', views.reponse, name='calendrier-reponse'),
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/oui', views.repouidir),
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/pe', views.reppedir),
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/non', views.repnondir),
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/(?P<coderep>\w+)/?',
views.reponse_event,
name='calendrier.reponse_event'),
url(r'(?P<pYear>\d+)/(?P<pMonth>\d+)/(?P<id>\d+)/?', views.view_event),
url(r'(?P<pYear>\d+)/(?P<pMonth>\d+)/?$', views.calendar),
url(r'(?P<id>\d+)/?', views.view_eventbis, name='view-event'),

View file

@ -1,21 +1,22 @@
from datetime import date, datetime
from django.shortcuts import render, redirect, get_object_or_404
from calendrier.forms import ModifEventForm, EventForm, ParticipantsForm, \
SendMail, ChangeDoodleName
from calendrier.models import Event, Participants
from django.contrib.sites.shortcuts import get_current_site
from django.utils.safestring import mark_safe
from django.views.generic import UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from partitions.decorators import chef_required
from django.core.urlresolvers import reverse, reverse_lazy
from django.contrib.auth.decorators import login_required
from gestion.models import ErnestoUser
from django.utils.decorators import method_decorator
from django.core.mail import send_mail
from django.http import Http404
from gestion.models import ErnestoUser
from calendrier.calend import EventCalendar
from calendar import monthrange
from datetime import date, datetime
from calendrier.forms import ModifEventForm, EventForm, ParticipantsForm, \
SendMail, ChangeDoodleName
from calendrier.models import Event, Participants
from partitions.decorators import chef_required
from propositions.utils import generer
@ -130,16 +131,19 @@ def resend(request, id):
'Pour répondre non, allez sur %s%s\n'
'Pour répondre peut-être, allez sur %s%s\n') \
% (domain,
reverse_lazy('view-event', args=[ev.id]),
reverse_lazy('view-event', args=[obj.id]),
domain,
reverse_lazy('calendrier.views.repouidir',
args=[user.slug, ev.slug]),
reverse_lazy(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "oui"]),
domain,
reverse_lazy('calendrier.views.repnondir',
args=[user.slug, ev.slug]),
reverse_lazy(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "non"]),
domain,
reverse_lazy('calendrier.views.reppedir',
args=[user.slug, ev.slug]))
reverse_lazy(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "pe"]))
send_mail(Subject, text, sender, receivers)
return redirect("calendrier.views.view_eventbis", id)
except:
@ -205,16 +209,19 @@ def create_event(request):
'Pour répondre non, allez sur %s%s\n'
'Pour répondre peut-être, allez sur %s%s\n') \
% (domain,
reverse_lazy('view-event', args=[obj.id]),
reverse('view-event', args=[obj.id]),
domain,
reverse_lazy('calendrier.views.repouidir',
args=[user.slug, obj.slug]),
reverse(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "oui"]),
domain,
reverse_lazy('calendrier.views.repnondir',
args=[user.slug, obj.slug]),
reverse(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "non"]),
domain,
reverse_lazy('calendrier.views.reppedir',
args=[user.slug, obj.slug]))
reverse(
'calendrier.reponse_event',
args=[user.slug, obj.slug, "pe"]))
send_mail(Subject, text, sender, receivers)
except:
erreur = "Une erreur est survenue, le mail n'a " \
@ -247,54 +254,19 @@ def reponse(request, id):
return render(request, "calendrier/reponse.html", locals())
def repouidir(request, codeus, codeev):
def reponse_event(request, codeus, codeev, coderep):
"""
Inscriptions aux événements via les liens envoyés par mail.
"""
# On vérifie qu'on a reçu une réponse valide
if coderep not in ['oui', 'non', 'pe']:
raise Http404
part = get_object_or_404(ErnestoUser, slug=codeus)
ev = get_object_or_404(Event, slug=codeev)
try:
p = Participants.objects.get(event=ev, participant=part)
p.delete()
except Participants.DoesNotExist:
pass
obj = Participants()
obj.participant = part
obj.event = ev
obj.reponse = "oui"
obj.save()
# envoi = True # Variable not used ???
return redirect('calendrier.views.home')
def reppedir(request, codeus, codeev):
part = get_object_or_404(ErnestoUser, slug=codeus)
ev = get_object_or_404(Event, slug=codeev)
try:
p = Participants.objects.get(event=ev, participant=part)
p.delete()
except Participants.DoesNotExist:
pass
obj = Participants()
obj.participant = part
obj.event = ev
obj.reponse = "pe"
obj.save()
# envoi = True # Variable not used ???
return redirect('calendrier.views.home')
def repnondir(request, codeus, codeev):
part = get_object_or_404(ErnestoUser, slug=codeus)
ev = get_object_or_404(Event, slug=codeev)
try:
p = Participants.objects.get(event=ev, participant=part)
p.delete()
except Participants.DoesNotExist:
pass
obj = Participants()
obj.participant = part
obj.event = ev
obj.reponse = "non"
obj.save()
# envoi = True # Variable not used ???
# On supprime la précédente réponse si elle existe
Participants.objects.filter(event=ev, participant=part).delete()
# Et on écrit la nouvelle inscription
Participants.objects.create(participant=part, event=ev, reponse=coderep)
return redirect('calendrier.views.home')
@ -317,5 +289,3 @@ class EventDelete(DeleteView):
@method_decorator(chef_required)
def dispatch(self, *args, **kwargs):
return super(EventDelete, self).dispatch(*args, **kwargs)
# Create your views here.