Compare commits
3 Commits
4b3f1462e7
...
0bfa51bf0c
Author | SHA1 | Date |
---|---|---|
|
0bfa51bf0c | |
|
8bd4cfa756 | |
|
3ac744c27e |
|
@ -9,26 +9,36 @@ from colloscope.models import *
|
|||
LOCAL_TZ = "Europe/Paris"
|
||||
|
||||
|
||||
def to_calendar(etudiant, periode):
|
||||
def emailize(nom, prenom=None):
|
||||
if prenom is not None:
|
||||
return "{}.{}@example.com" \
|
||||
.format(
|
||||
prenom.replace(" ", "_").lower(),
|
||||
nom.replace(" ", "_").lower()
|
||||
)
|
||||
else:
|
||||
return "{}@example.com" \
|
||||
.format(nom.replace(" ", "_").lower())
|
||||
|
||||
|
||||
def to_calendar(etudiant, periode):
|
||||
p = path.abspath('./static/Base_Calendar.ics')
|
||||
|
||||
with open(p) as f:
|
||||
cal = Calendar.from_ical(f.read())
|
||||
|
||||
|
||||
rotations = Rotation.objects \
|
||||
.filter(groupes__membres=etudiant) \
|
||||
.select_related("creneau__periode__classe__lycee") \
|
||||
.select_related("creneau__matiere") \
|
||||
.select_related("creneau__colleur") \
|
||||
.filter(groupes__membres=etudiant, periode=periode) \
|
||||
.select_related("creneau__periode__classe__lycee") \
|
||||
.select_related("creneau__matiere") \
|
||||
.select_related("creneau__colleur")
|
||||
|
||||
for rotation in rotations:
|
||||
event = Event()
|
||||
|
||||
summary = f"Colle {rotation.creneau.matiere} ({rotation.creneau.colleur})"
|
||||
event.add("summary", summary)
|
||||
|
||||
|
||||
start = rotation.datetime()
|
||||
fin = start + rotation.creneau.duree
|
||||
|
||||
|
@ -36,7 +46,6 @@ def to_calendar(etudiant, periode):
|
|||
event.add("dtend", fin, parameters={"tzid": LOCAL_TZ})
|
||||
event.add("dtstamp", datetime.now())
|
||||
event.add("uid", str(uuid4()))
|
||||
|
||||
|
||||
event.add("location", f"{rotation.creneau.salle} ({rotation.creneau.periode.classe.lycee})")
|
||||
event.add("categories", "COLLE-" + str(rotation.creneau.matiere))
|
||||
|
@ -44,15 +53,15 @@ def to_calendar(etudiant, periode):
|
|||
description = f"Groupes: {','.join(str(groupe) for groupe in rotation.groupes.all())}"
|
||||
event.add("description", description)
|
||||
|
||||
organizer = vCalAddress("mailto:unknown@mp2i-vms.fr")
|
||||
organizer = vCalAddress(f"mailto:{emailize(rotation.creneau.colleur.nom)}")
|
||||
organizer.params["cn"] = vText(str(rotation.creneau.colleur))
|
||||
organizer.params["role"] = vText("Colleur")
|
||||
event.add("organizer", organizer)
|
||||
|
||||
for e in rotation.groupe_effectif():
|
||||
attendee = vCalAddress("mailto:unknown@mp2i-vms.fr")
|
||||
attendee.params["role"] = vText("Etudiant")
|
||||
attendee = vCalAddress("mailto:{emailize(e.nom, prenom=e.prenom)}")
|
||||
attendee.params["cn"] = vText(str(e))
|
||||
attendee.params["role"] = vText("Etudiant")
|
||||
|
||||
event.add("attendee", attendee, encode=0)
|
||||
|
||||
|
|
Loading…
Reference in New Issue