diff --git a/calendrier/urls.py b/calendrier/urls.py index ac4a477..b37e1fb 100644 --- a/calendrier/urls.py +++ b/calendrier/urls.py @@ -11,9 +11,9 @@ urlpatterns = [ url(r'^resend/(?P\d+)$', views.resend, name='calendrier-resend'), url(r'^changename/?$', views.changename, name='change-doodle-name'), url(r'(?P\d+)/reponse/?', views.reponse, name='calendrier-reponse'), - url(r'(?P\w{6})/(?P\w{6})/oui', views.repouidir), - url(r'(?P\w{6})/(?P\w{6})/pe', views.reppedir), - url(r'(?P\w{6})/(?P\w{6})/non', views.repnondir), + url(r'(?P\w{6})/(?P\w{6})/(?P\w+)/?', + views.reponse_event, + name='calendrier.reponse_event'), url(r'(?P\d+)/(?P\d+)/(?P\d+)/?', views.view_event), url(r'(?P\d+)/(?P\d+)/?$', views.calendar), url(r'(?P\d+)/?', views.view_eventbis, name='view-event'), diff --git a/calendrier/views.py b/calendrier/views.py index 4d232a6..a5da1ae 100644 --- a/calendrier/views.py +++ b/calendrier/views.py @@ -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.