diff --git a/calendrier/views.py b/calendrier/views.py index 0eccabc..3d98619 100644 --- a/calendrier/views.py +++ b/calendrier/views.py @@ -1,5 +1,6 @@ from django.shortcuts import render, redirect -from calendrier.forms import ModifEventForm, EventForm, ParticipantsForm, SendMail, ChangeDoodleName +from calendrier.forms import ModifEventForm, EventForm, ParticipantsForm, \ + SendMail, ChangeDoodleName from calendrier.models import Event, Participants from django.utils.safestring import mark_safe from django.views.generic import UpdateView, DeleteView @@ -10,31 +11,33 @@ from gestion.models import ErnestoUser from django.utils.decorators import method_decorator from django.core.mail import send_mail -import smtplib -from email.mime.multipart import MIMEMultipart -from email.mime.text import MIMEText - from calendrier.calend import EventCalendar from calendar import monthrange -from datetime import * +from datetime import datetime, date from propositions.utils import generer + def named_month(pMonthNumber): return date(1900, pMonthNumber, 1).strftime('%B') + def home(request): lToday = datetime.now() return calendar(request, lToday.year, lToday.month) + def calendar(request, pYear, pMonth): - lYear=int(pYear) + lYear = int(pYear) lMonth = int(pMonth) lCalendarFromMonth = datetime(lYear, lMonth, 1) lCalendarToMonth = datetime(lYear, lMonth, monthrange(lYear, lMonth)[1]) - lEvents = Event.objects.filter(date__gte=lCalendarFromMonth, date__lte=lCalendarToMonth, calendrier=True) + lEvents = Event.objects.filter(date__gte=lCalendarFromMonth, + date__lte=lCalendarToMonth, + calendrier=True) if request.user.is_authenticated(): - lEvents = Event.objects.filter(date__gte=lCalendarFromMonth, date__lte=lCalendarToMonth) + lEvents = Event.objects.filter(date__gte=lCalendarFromMonth, + date__lte=lCalendarToMonth) lCalendar = EventCalendar(lEvents).formatmonth(lYear, lMonth) lPreviousYear = lYear lPreviousMonth = lMonth - 1 @@ -48,24 +51,26 @@ def calendar(request, pYear, pMonth): lNextYear = lYear + 1 lYearAfterThis = lYear + 1 lYearBeforeThis = lYear - 1 - return render(request, 'calendrier/home.html', {'Calendar': mark_safe(lCalendar), - 'Month': lMonth, - 'MonthName' : named_month(lMonth), - 'Year': lYear, - 'PreviousMonth': lPreviousMonth, - 'PreviousMonthName': named_month(lPreviousMonth), - 'PreviousYear': lPreviousYear, - 'NextMonth': lNextMonth, - 'NextMonthName': named_month(lNextMonth), - 'NextYear': lNextYear, - 'YearBeforeThis': lYearBeforeThis, - 'YearAfterThis': lYearAfterThis, + return render(request, 'calendrier/home.html', { + 'Calendar': mark_safe(lCalendar), + 'Month': lMonth, + 'MonthName': named_month(lMonth), + 'Year': lYear, + 'PreviousMonth': lPreviousMonth, + 'PreviousMonthName': named_month(lPreviousMonth), + 'PreviousYear': lPreviousYear, + 'NextMonth': lNextMonth, + 'NextMonthName': named_month(lNextMonth), + 'NextYear': lNextYear, + 'YearBeforeThis': lYearBeforeThis, + 'YearAfterThis': lYearAfterThis, }) + def view_event(request, pYear, pMonth, id): ev = Event.objects.get(id=id) if not request.user.is_authenticated() and not ev.calendrier: - return redirect('calendrier.views.home') + return redirect('calendrier.views.home') nom = ev.nom.capitalize fin = False desc = False @@ -76,13 +81,14 @@ def view_event(request, pYear, pMonth, id): if ev.fin: fin = True if ev.description: - desc = True - return render(request, 'calendrier/view_event.html', locals()) + desc = True + return render(request, 'calendrier/view_event.html', locals()) + def view_eventbis(request, id): ev = Event.objects.get(id=id) if not request.user.is_authenticated() and not ev.calendrier: - return redirect('calendrier.views.home') + return redirect('calendrier.views.home') part = ev.participants_set.all() nom = ev.nom.capitalize fin = False @@ -96,9 +102,10 @@ def view_eventbis(request, id): desc = True return render(request, 'calendrier/view_event.html', locals()) + @chef_required def resend(request, id): - if request.method=="POST": + if request.method == "POST": form = SendMail(request.POST) if form.is_valid(): ev = Event.objects.get(id=id) @@ -106,25 +113,36 @@ def resend(request, id): message = form.cleaned_data["message"] try: for user in users: - if user.mails: - Subject = "[Pouet-Pouet] " + ev.nom + ", le " + ev.date.strftime('%d/%m/%Y') - sender = 'fanfare@ens.fr' - receivers = [user.user.email] - text = "Bonjour, un évémenent a été créé." - if message != '': - text = message - text+= '\n Pour voir l\'événement, allez sur http://www.ernestophone.ens.fr/calendar/' + str(ev.id) +'\n' - text+= '\nPour répondre oui, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/oui' - text+= '\nPour répondre non, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/non' - text+= '\nPour répondre peut-être, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/pe' - send_mail(Subject, text, sender, receivers) + if user.mails: + Subject = "[Pouet-Pouet] " + ev.nom + ", le " \ + + ev.date.strftime('%d/%m/%Y') + sender = 'fanfare@ens.fr' + receivers = [user.user.email] + text = "Bonjour, un évémenent a été créé." + if message != '': + text = message + text += '\n Pour voir l\'événement, allez sur ' \ + + 'http://www.ernestophone.ens.fr/calendar/' \ + + str(ev.id) + '\n' + text += '\nPour répondre oui, allez sur ' \ + + 'http://www.ernestophone.ens.fr/calendar/' \ + + user.slug + '/' + ev.slug + '/oui' + text += '\nPour répondre non, allez sur ' \ + + 'http://www.ernestophone.ens.fr/calendar/' \ + + user.slug + '/' + ev.slug + '/non' + text += '\nPour répondre peut-être, allez sur ' \ + + 'http://www.ernestophone.ens.fr/calendar/' \ + + user.slug + '/' + ev.slug + '/pe' + send_mail(Subject, text, sender, receivers) return redirect("calendrier.views.view_eventbis", id) except: - erreur = "Une erreur est survenue, le mail n'a pas pu être envoyé." + erreur = "Une erreur est survenue, le mail n'a pas pu être " \ + + "envoyé." else: form = SendMail() return render(request, "calendrier/resend.html", locals()) - + + @login_required def changename(request): if request.method == 'POST': @@ -132,11 +150,12 @@ def changename(request): form = ChangeDoodleName(requbis, instance=request.user) if form.is_valid(): form.save() - success=True + success = True else: form = ChangeDoodleName(instance=request.user) return render(request, 'calendrier/changename.html', locals()) + @chef_required def create_event(request): if request.method == "POST": @@ -148,7 +167,7 @@ def create_event(request): try: Event.objects.get(slug=code) except: - temp=False + temp = False sendmail = form.cleaned_data["sendmail"] nom = form.cleaned_data["nom"] date = form.cleaned_data["date"] @@ -158,38 +177,41 @@ def create_event(request): obj = form.save(commit=False) obj.slug = code obj.save() - id= obj.id + id = obj.id envoi = True if sendmail: - users = ErnestoUser.objects.filter(is_ernesto=True) - for user in users: - if user.mails: - try: - Subject = "[Pouet-Pouet] " + nom + ", le " + date - sender = 'fanfare@ens.fr' - receivers = [user.user.email] - text = "Bonjour, un évémenent a été créé." - if message != '': - text = message - text+= '\n Pour voir l\'événement, allez sur http://www.ernestophone.ens.fr/calendar/' + str(obj.id) +'\n' - text+= '\nPour répondre oui, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/oui' - text+= '\nPour répondre non, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/non' - text+= '\nPour répondre peut-être, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/pe' - send_mail(Subject, text, sender, receivers) - # smtpObj = smtplib.SMTP('clipper.ens.fr', 25) - # msg = MIMEMultipart("alternative") - # msg["From"] = sender - # msg["To"] = receivers - # text = MIMEText(text, 'plain') - # msg.attach(text) - # smtpObj.sendmail(sender, receivers, msg.as_string()) - except: - erreur = "Une erreur est survenue, le mail n'a pas pu être envoyé." + users = ErnestoUser.objects.filter(is_ernesto=True) + for user in users: + if user.mails: + try: + Subject = "[Pouet-Pouet] " + nom + ", le " + date + sender = 'fanfare@ens.fr' + receivers = [user.user.email] + text = "Bonjour, un évémenent a été créé." + if message != '': + text = message + text += '\n Pour voir l\'événement, allez sur ' + text += 'http://www.ernestophone.ens.fr/calendar/' + text += str(obj.id) + '\n' + text += '\nPour répondre oui, allez sur ' + text += 'http://www.ernestophone.ens.fr/calendar/' + text += user.slug + '/' + obj.slug + '/oui' + text += '\nPour répondre non, allez sur ' + text += 'http://www.ernestophone.ens.fr/calendar/' + text += user.slug + '/' + obj.slug + '/non' + text += '\nPour répondre peut-être, allez sur ' + text += 'http://www.ernestophone.ens.fr/calendar/' + text += user.slug + '/' + obj.slug + '/pe' + send_mail(Subject, text, sender, receivers) + except: + erreur = "Une erreur est survenue, le mail n'a " \ + + "pas pu être envoyé." else: form = EventForm() return render(request, "calendrier/create.html", locals()) + @login_required def reponse(request, id): part = request.user.profile @@ -211,6 +233,7 @@ def reponse(request, id): form = ParticipantsForm() return render(request, "calendrier/reponse.html", locals()) + def repouidir(request, codeus, codeev): part = ErnestoUser.objects.get(slug=codeus) ev = Event.objects.get(slug=codeev) @@ -222,9 +245,9 @@ def repouidir(request, codeus, codeev): obj = Participants() obj.participant = part obj.event = ev - obj.reponse="oui" + obj.reponse = "oui" obj.save() - envoi = True + # envoi = True # Variable not used ??? return redirect('calendrier.views.home') @@ -239,11 +262,12 @@ def reppedir(request, codeus, codeev): obj = Participants() obj.participant = part obj.event = ev - obj.reponse="pe" + obj.reponse = "pe" obj.save() - envoi = True + # envoi = True # Variable not used ??? return redirect('calendrier.views.home') + def repnondir(request, codeus, codeev): part = ErnestoUser.objects.get(slug=codeus) ev = Event.objects.get(slug=codeev) @@ -255,11 +279,12 @@ def repnondir(request, codeus, codeev): obj = Participants() obj.participant = part obj.event = ev - obj.reponse="non" + obj.reponse = "non" obj.save() - envoi = True + # envoi = True # Variable not used ??? return redirect('calendrier.views.home') + class EventUpdate(UpdateView): model = Event template_name = "calendrier/update.html" @@ -270,6 +295,7 @@ class EventUpdate(UpdateView): def dispatch(self, *args, **kwargs): return super(EventUpdate, self).dispatch(*args, **kwargs) + class EventDelete(DeleteView): model = Event template_name = "calendrier/delete.html"