Merge branch 'master' into demo

This commit is contained in:
Martin Pépin 2016-07-13 20:16:48 +02:00
commit bcaae09277
2 changed files with 102 additions and 74 deletions

View file

@ -14,5 +14,5 @@ urlpatterns = patterns('calendrier.views',
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/non', 'repnondir'),
url(r'(?P<pYear>\d+)/(?P<pMonth>\d+)/(?P<id>\d+)/?', 'view_event'),
url(r'(?P<pYear>\d+)/(?P<pMonth>\d+)/?$', 'calendar'),
url(r'(?P<id>\d+)/?', 'view_eventbis'),
url(r'(?P<id>\d+)/?', 'view_eventbis', 'view-event'),
)

View file

@ -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)
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,7 +51,8 @@ def calendar(request, pYear, pMonth):
lNextYear = lYear + 1
lYearAfterThis = lYear + 1
lYearBeforeThis = lYear - 1
return render(request, 'calendrier/home.html', {'Calendar': mark_safe(lCalendar),
return render(request, 'calendrier/home.html', {
'Calendar': mark_safe(lCalendar),
'Month': lMonth,
'MonthName': named_month(lMonth),
'Year': lYear,
@ -62,6 +66,7 @@ def calendar(request, pYear, pMonth):
'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:
@ -79,6 +84,7 @@ def view_event(request, pYear, pMonth, id):
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:
@ -96,6 +102,7 @@ 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":
@ -107,24 +114,35 @@ def resend(request, id):
try:
for user in users:
if user.mails:
Subject = "[Pouet-Pouet] " + ev.nom + ", le " + ev.date.strftime('%d/%m/%Y')
Subject = "[Pouet-Pouet] %s, le %s" % (
ev.nom, 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'
else:
text = "Bonjour, un évémenent a été créé.\n"
text += 'Pour voir l\'événement, allez sur %s\n' \
+ 'Pour répondre oui allez sur %s\n' \
+ 'Pour répondre non, allez sur %s\n' \
+ 'Pour répondre peut-être, allez sur %s\n' \
% (reverse_lazy('view-event', args=[ev.id]),
reverse_lazy('repouidir', args=[
user.slug, ev.slug]),
reverse_lazy('repnondir', args=[
user.slug, ev.slug]),
reverse_lazy('reppedir', args=[
user.slug, ev.slug]))
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':
@ -137,6 +155,7 @@ def changename(request):
form = ChangeDoodleName(instance=request.user)
return render(request, 'calendrier/changename.html', locals())
@chef_required
def create_event(request):
if request.method == "POST":
@ -165,31 +184,36 @@ def create_event(request):
for user in users:
if user.mails:
try:
Subject = "[Pouet-Pouet] " + nom + ", le " + date
Subject = "[Pouet-Pouet] %s, le %s" % (nom, 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'
else:
text = "Bonjour, un évémenent a été créé.\n"
text += "Pour voir l'événement, allez sur %s" \
+ '\nPour répondre oui allez sur %s\n' \
+ 'Pour répondre non, allez sur %s\n' \
+ 'Pour répondre peut-être, allez sur %s' \
+ '\n' \
% (reverse_lazy('view-event', args=[
obj.id]),
reverse_lazy('repouidir', args=[
user.slug, obj.slug]),
reverse_lazy('repnondir', args=[
user.slug, obj.slug]),
reverse_lazy('reppedir', args=[
user.slug, obj.slug]))
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é."
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 +235,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)
@ -224,7 +249,7 @@ def repouidir(request, codeus, codeev):
obj.event = ev
obj.reponse = "oui"
obj.save()
envoi = True
# envoi = True # Variable not used ???
return redirect('calendrier.views.home')
@ -241,9 +266,10 @@ def reppedir(request, codeus, codeev):
obj.event = ev
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)
@ -257,9 +283,10 @@ def repnondir(request, codeus, codeev):
obj.event = ev
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 +297,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"