diff --git a/colloscope/icalexport.py b/colloscope/icalexport.py index 9c3ae44..2d8af49 100644 --- a/colloscope/icalexport.py +++ b/colloscope/icalexport.py @@ -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) \ + .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)