Merge branch 'master' into demo
This commit is contained in:
commit
bcaae09277
2 changed files with 102 additions and 74 deletions
|
@ -14,5 +14,5 @@ urlpatterns = patterns('calendrier.views',
|
||||||
url(r'(?P<codeus>\w{6})/(?P<codeev>\w{6})/non', 'repnondir'),
|
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+)/(?P<id>\d+)/?', 'view_event'),
|
||||||
url(r'(?P<pYear>\d+)/(?P<pMonth>\d+)/?$', 'calendar'),
|
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'),
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django.shortcuts import render, redirect
|
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 calendrier.models import Event, Participants
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.views.generic import UpdateView, DeleteView
|
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.utils.decorators import method_decorator
|
||||||
from django.core.mail import send_mail
|
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 calendrier.calend import EventCalendar
|
||||||
from calendar import monthrange
|
from calendar import monthrange
|
||||||
from datetime import *
|
from datetime import datetime, date
|
||||||
|
|
||||||
from propositions.utils import generer
|
from propositions.utils import generer
|
||||||
|
|
||||||
|
|
||||||
def named_month(pMonthNumber):
|
def named_month(pMonthNumber):
|
||||||
return date(1900, pMonthNumber, 1).strftime('%B')
|
return date(1900, pMonthNumber, 1).strftime('%B')
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
lToday = datetime.now()
|
lToday = datetime.now()
|
||||||
return calendar(request, lToday.year, lToday.month)
|
return calendar(request, lToday.year, lToday.month)
|
||||||
|
|
||||||
|
|
||||||
def calendar(request, pYear, pMonth):
|
def calendar(request, pYear, pMonth):
|
||||||
lYear=int(pYear)
|
lYear = int(pYear)
|
||||||
lMonth = int(pMonth)
|
lMonth = int(pMonth)
|
||||||
lCalendarFromMonth = datetime(lYear, lMonth, 1)
|
lCalendarFromMonth = datetime(lYear, lMonth, 1)
|
||||||
lCalendarToMonth = datetime(lYear, lMonth, monthrange(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():
|
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)
|
lCalendar = EventCalendar(lEvents).formatmonth(lYear, lMonth)
|
||||||
lPreviousYear = lYear
|
lPreviousYear = lYear
|
||||||
lPreviousMonth = lMonth - 1
|
lPreviousMonth = lMonth - 1
|
||||||
|
@ -48,24 +51,26 @@ def calendar(request, pYear, pMonth):
|
||||||
lNextYear = lYear + 1
|
lNextYear = lYear + 1
|
||||||
lYearAfterThis = lYear + 1
|
lYearAfterThis = lYear + 1
|
||||||
lYearBeforeThis = lYear - 1
|
lYearBeforeThis = lYear - 1
|
||||||
return render(request, 'calendrier/home.html', {'Calendar': mark_safe(lCalendar),
|
return render(request, 'calendrier/home.html', {
|
||||||
'Month': lMonth,
|
'Calendar': mark_safe(lCalendar),
|
||||||
'MonthName' : named_month(lMonth),
|
'Month': lMonth,
|
||||||
'Year': lYear,
|
'MonthName': named_month(lMonth),
|
||||||
'PreviousMonth': lPreviousMonth,
|
'Year': lYear,
|
||||||
'PreviousMonthName': named_month(lPreviousMonth),
|
'PreviousMonth': lPreviousMonth,
|
||||||
'PreviousYear': lPreviousYear,
|
'PreviousMonthName': named_month(lPreviousMonth),
|
||||||
'NextMonth': lNextMonth,
|
'PreviousYear': lPreviousYear,
|
||||||
'NextMonthName': named_month(lNextMonth),
|
'NextMonth': lNextMonth,
|
||||||
'NextYear': lNextYear,
|
'NextMonthName': named_month(lNextMonth),
|
||||||
'YearBeforeThis': lYearBeforeThis,
|
'NextYear': lNextYear,
|
||||||
'YearAfterThis': lYearAfterThis,
|
'YearBeforeThis': lYearBeforeThis,
|
||||||
|
'YearAfterThis': lYearAfterThis,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
def view_event(request, pYear, pMonth, id):
|
def view_event(request, pYear, pMonth, id):
|
||||||
ev = Event.objects.get(id=id)
|
ev = Event.objects.get(id=id)
|
||||||
if not request.user.is_authenticated() and not ev.calendrier:
|
if not request.user.is_authenticated() and not ev.calendrier:
|
||||||
return redirect('calendrier.views.home')
|
return redirect('calendrier.views.home')
|
||||||
nom = ev.nom.capitalize
|
nom = ev.nom.capitalize
|
||||||
fin = False
|
fin = False
|
||||||
desc = False
|
desc = False
|
||||||
|
@ -76,13 +81,14 @@ def view_event(request, pYear, pMonth, id):
|
||||||
if ev.fin:
|
if ev.fin:
|
||||||
fin = True
|
fin = True
|
||||||
if ev.description:
|
if ev.description:
|
||||||
desc = True
|
desc = True
|
||||||
return render(request, 'calendrier/view_event.html', locals())
|
return render(request, 'calendrier/view_event.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def view_eventbis(request, id):
|
def view_eventbis(request, id):
|
||||||
ev = Event.objects.get(id=id)
|
ev = Event.objects.get(id=id)
|
||||||
if not request.user.is_authenticated() and not ev.calendrier:
|
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()
|
part = ev.participants_set.all()
|
||||||
nom = ev.nom.capitalize
|
nom = ev.nom.capitalize
|
||||||
fin = False
|
fin = False
|
||||||
|
@ -96,9 +102,10 @@ def view_eventbis(request, id):
|
||||||
desc = True
|
desc = True
|
||||||
return render(request, 'calendrier/view_event.html', locals())
|
return render(request, 'calendrier/view_event.html', locals())
|
||||||
|
|
||||||
|
|
||||||
@chef_required
|
@chef_required
|
||||||
def resend(request, id):
|
def resend(request, id):
|
||||||
if request.method=="POST":
|
if request.method == "POST":
|
||||||
form = SendMail(request.POST)
|
form = SendMail(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
ev = Event.objects.get(id=id)
|
ev = Event.objects.get(id=id)
|
||||||
|
@ -106,25 +113,36 @@ def resend(request, id):
|
||||||
message = form.cleaned_data["message"]
|
message = form.cleaned_data["message"]
|
||||||
try:
|
try:
|
||||||
for user in users:
|
for user in users:
|
||||||
if user.mails:
|
if user.mails:
|
||||||
Subject = "[Pouet-Pouet] " + ev.nom + ", le " + ev.date.strftime('%d/%m/%Y')
|
Subject = "[Pouet-Pouet] %s, le %s" % (
|
||||||
sender = 'fanfare@ens.fr'
|
ev.nom, ev.date.strftime('%d/%m/%Y'))
|
||||||
receivers = [user.user.email]
|
sender = 'fanfare@ens.fr'
|
||||||
text = "Bonjour, un évémenent a été créé."
|
receivers = [user.user.email]
|
||||||
if message != '':
|
if message != '':
|
||||||
text = message
|
text = message
|
||||||
text+= '\n Pour voir l\'événement, allez sur http://www.ernestophone.ens.fr/calendar/' + str(ev.id) +'\n'
|
else:
|
||||||
text+= '\nPour répondre oui, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/oui'
|
text = "Bonjour, un évémenent a été créé.\n"
|
||||||
text+= '\nPour répondre non, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/non'
|
text += 'Pour voir l\'événement, allez sur %s\n' \
|
||||||
text+= '\nPour répondre peut-être, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + ev.slug + '/pe'
|
+ 'Pour répondre oui allez sur %s\n' \
|
||||||
send_mail(Subject, text, sender, receivers)
|
+ '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)
|
return redirect("calendrier.views.view_eventbis", id)
|
||||||
except:
|
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:
|
else:
|
||||||
form = SendMail()
|
form = SendMail()
|
||||||
return render(request, "calendrier/resend.html", locals())
|
return render(request, "calendrier/resend.html", locals())
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def changename(request):
|
def changename(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
@ -132,11 +150,12 @@ def changename(request):
|
||||||
form = ChangeDoodleName(requbis, instance=request.user)
|
form = ChangeDoodleName(requbis, instance=request.user)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
success=True
|
success = True
|
||||||
else:
|
else:
|
||||||
form = ChangeDoodleName(instance=request.user)
|
form = ChangeDoodleName(instance=request.user)
|
||||||
return render(request, 'calendrier/changename.html', locals())
|
return render(request, 'calendrier/changename.html', locals())
|
||||||
|
|
||||||
|
|
||||||
@chef_required
|
@chef_required
|
||||||
def create_event(request):
|
def create_event(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
@ -148,7 +167,7 @@ def create_event(request):
|
||||||
try:
|
try:
|
||||||
Event.objects.get(slug=code)
|
Event.objects.get(slug=code)
|
||||||
except:
|
except:
|
||||||
temp=False
|
temp = False
|
||||||
sendmail = form.cleaned_data["sendmail"]
|
sendmail = form.cleaned_data["sendmail"]
|
||||||
nom = form.cleaned_data["nom"]
|
nom = form.cleaned_data["nom"]
|
||||||
date = form.cleaned_data["date"]
|
date = form.cleaned_data["date"]
|
||||||
|
@ -158,38 +177,43 @@ def create_event(request):
|
||||||
obj = form.save(commit=False)
|
obj = form.save(commit=False)
|
||||||
obj.slug = code
|
obj.slug = code
|
||||||
obj.save()
|
obj.save()
|
||||||
id= obj.id
|
id = obj.id
|
||||||
envoi = True
|
envoi = True
|
||||||
if sendmail:
|
if sendmail:
|
||||||
users = ErnestoUser.objects.filter(is_ernesto=True)
|
users = ErnestoUser.objects.filter(is_ernesto=True)
|
||||||
for user in users:
|
for user in users:
|
||||||
if user.mails:
|
if user.mails:
|
||||||
try:
|
try:
|
||||||
Subject = "[Pouet-Pouet] " + nom + ", le " + date
|
Subject = "[Pouet-Pouet] %s, le %s" % (nom, date)
|
||||||
sender = 'fanfare@ens.fr'
|
sender = 'fanfare@ens.fr'
|
||||||
receivers = [user.user.email]
|
receivers = [user.user.email]
|
||||||
text = "Bonjour, un évémenent a été créé."
|
if message != '':
|
||||||
if message != '':
|
text = message
|
||||||
text = message
|
else:
|
||||||
text+= '\n Pour voir l\'événement, allez sur http://www.ernestophone.ens.fr/calendar/' + str(obj.id) +'\n'
|
text = "Bonjour, un évémenent a été créé.\n"
|
||||||
text+= '\nPour répondre oui, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/oui'
|
text += "Pour voir l'événement, allez sur %s" \
|
||||||
text+= '\nPour répondre non, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/non'
|
+ '\nPour répondre oui allez sur %s\n' \
|
||||||
text+= '\nPour répondre peut-être, allez sur http://www.ernestophone.ens.fr/calendar/' + user.slug + '/' + obj.slug + '/pe'
|
+ 'Pour répondre non, allez sur %s\n' \
|
||||||
send_mail(Subject, text, sender, receivers)
|
+ 'Pour répondre peut-être, allez sur %s' \
|
||||||
# smtpObj = smtplib.SMTP('clipper.ens.fr', 25)
|
+ '\n' \
|
||||||
# msg = MIMEMultipart("alternative")
|
% (reverse_lazy('view-event', args=[
|
||||||
# msg["From"] = sender
|
obj.id]),
|
||||||
# msg["To"] = receivers
|
reverse_lazy('repouidir', args=[
|
||||||
# text = MIMEText(text, 'plain')
|
user.slug, obj.slug]),
|
||||||
# msg.attach(text)
|
reverse_lazy('repnondir', args=[
|
||||||
# smtpObj.sendmail(sender, receivers, msg.as_string())
|
user.slug, obj.slug]),
|
||||||
except:
|
reverse_lazy('reppedir', args=[
|
||||||
erreur = "Une erreur est survenue, le mail n'a pas pu être envoyé."
|
user.slug, obj.slug]))
|
||||||
|
send_mail(Subject, text, sender, receivers)
|
||||||
|
except:
|
||||||
|
erreur = "Une erreur est survenue, le mail n'a " \
|
||||||
|
+ "pas pu être envoyé."
|
||||||
else:
|
else:
|
||||||
form = EventForm()
|
form = EventForm()
|
||||||
|
|
||||||
return render(request, "calendrier/create.html", locals())
|
return render(request, "calendrier/create.html", locals())
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def reponse(request, id):
|
def reponse(request, id):
|
||||||
part = request.user.profile
|
part = request.user.profile
|
||||||
|
@ -211,6 +235,7 @@ def reponse(request, id):
|
||||||
form = ParticipantsForm()
|
form = ParticipantsForm()
|
||||||
return render(request, "calendrier/reponse.html", locals())
|
return render(request, "calendrier/reponse.html", locals())
|
||||||
|
|
||||||
|
|
||||||
def repouidir(request, codeus, codeev):
|
def repouidir(request, codeus, codeev):
|
||||||
part = ErnestoUser.objects.get(slug=codeus)
|
part = ErnestoUser.objects.get(slug=codeus)
|
||||||
ev = Event.objects.get(slug=codeev)
|
ev = Event.objects.get(slug=codeev)
|
||||||
|
@ -222,9 +247,9 @@ def repouidir(request, codeus, codeev):
|
||||||
obj = Participants()
|
obj = Participants()
|
||||||
obj.participant = part
|
obj.participant = part
|
||||||
obj.event = ev
|
obj.event = ev
|
||||||
obj.reponse="oui"
|
obj.reponse = "oui"
|
||||||
obj.save()
|
obj.save()
|
||||||
envoi = True
|
# envoi = True # Variable not used ???
|
||||||
return redirect('calendrier.views.home')
|
return redirect('calendrier.views.home')
|
||||||
|
|
||||||
|
|
||||||
|
@ -239,11 +264,12 @@ def reppedir(request, codeus, codeev):
|
||||||
obj = Participants()
|
obj = Participants()
|
||||||
obj.participant = part
|
obj.participant = part
|
||||||
obj.event = ev
|
obj.event = ev
|
||||||
obj.reponse="pe"
|
obj.reponse = "pe"
|
||||||
obj.save()
|
obj.save()
|
||||||
envoi = True
|
# envoi = True # Variable not used ???
|
||||||
return redirect('calendrier.views.home')
|
return redirect('calendrier.views.home')
|
||||||
|
|
||||||
|
|
||||||
def repnondir(request, codeus, codeev):
|
def repnondir(request, codeus, codeev):
|
||||||
part = ErnestoUser.objects.get(slug=codeus)
|
part = ErnestoUser.objects.get(slug=codeus)
|
||||||
ev = Event.objects.get(slug=codeev)
|
ev = Event.objects.get(slug=codeev)
|
||||||
|
@ -255,11 +281,12 @@ def repnondir(request, codeus, codeev):
|
||||||
obj = Participants()
|
obj = Participants()
|
||||||
obj.participant = part
|
obj.participant = part
|
||||||
obj.event = ev
|
obj.event = ev
|
||||||
obj.reponse="non"
|
obj.reponse = "non"
|
||||||
obj.save()
|
obj.save()
|
||||||
envoi = True
|
# envoi = True # Variable not used ???
|
||||||
return redirect('calendrier.views.home')
|
return redirect('calendrier.views.home')
|
||||||
|
|
||||||
|
|
||||||
class EventUpdate(UpdateView):
|
class EventUpdate(UpdateView):
|
||||||
model = Event
|
model = Event
|
||||||
template_name = "calendrier/update.html"
|
template_name = "calendrier/update.html"
|
||||||
|
@ -270,6 +297,7 @@ class EventUpdate(UpdateView):
|
||||||
def dispatch(self, *args, **kwargs):
|
def dispatch(self, *args, **kwargs):
|
||||||
return super(EventUpdate, self).dispatch(*args, **kwargs)
|
return super(EventUpdate, self).dispatch(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class EventDelete(DeleteView):
|
class EventDelete(DeleteView):
|
||||||
model = Event
|
model = Event
|
||||||
template_name = "calendrier/delete.html"
|
template_name = "calendrier/delete.html"
|
||||||
|
|
Loading…
Add table
Reference in a new issue