diff --git a/mycaldav/export_team_pdf.py b/mycaldav/export_team_pdf.py index 881577c..9d6221c 100644 --- a/mycaldav/export_team_pdf.py +++ b/mycaldav/export_team_pdf.py @@ -16,6 +16,7 @@ BLACK = (0, 0, 0) class PDF(FPDF): o_caldav = None + caldavClient = None start = None end = None def init_date(self,date): @@ -47,6 +48,7 @@ class PDF(FPDF): def draw_week(self): self.set_font('Arial', '', 10) + self.caldavClient.get_events_by_date(self.caldavClient.a_team, self.start) self.ln() days_fr = ["Lundi","Mardi","Mercredi","Jeudi", "Vendredi", "Samedi", "Dimanche"] @@ -55,7 +57,9 @@ class PDF(FPDF): tmp_y = self.get_y() max_y = tmp_y dt = self.start + timedelta(days=d) + self.o_caldav.get_caldav_data(periode=1, date=dt) + self.o_caldav.sort_array_by_key(reverse=True) self.cell(w=50, h=5, align="L", txt=f"{days_fr[d]} {dt.strftime('%d.%m.%Y')}", ln=0) self.cell(w=60, h=5, align="L", txt=f"Jour", ln=1, border="B") @@ -73,9 +77,8 @@ class PDF(FPDF): self.cell(w=115, h=5, align="L", txt=f"", ln=0) self.cell(w=75, h=5, align="L", txt=f"Nuit", ln=1, border="B") for item in self.o_caldav.night: - print(f"If NUIT [{item.str_start_date}]<> [{dt.strftime('%d.%m')}]") if item.str_start_date != dt.strftime('%d.%m'): - print("pass") + continue self.set_fill_color(255,143,0) @@ -99,9 +102,10 @@ class PDF(FPDF): -def render_pdf(caldav_object, date=None): +def render_pdf(caldav_object,caldavClient, date=None): pdf = PDF(orientation='P', unit='mm', format='A4') pdf.o_caldav = caldav_object + pdf.caldavClient = caldavClient pdf.init_date(date) pdf.set_margins(4,2,4) pdf.add_page() diff --git a/mycaldav/models.py b/mycaldav/models.py index 4b5e3e5..a36dc48 100644 --- a/mycaldav/models.py +++ b/mycaldav/models.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta, time +from django.contrib.auth.models import User import datetime as Datetime import pickle import os @@ -13,6 +14,7 @@ import ssl from icalendar import Calendar, Event import recurring_ical_events import caldav + from mycaldav.settings import * # Create your models here. @@ -71,7 +73,6 @@ class cls_caldav(): self.parse_data(events) def parse_data(self, events): - for event in events: item = _caldav_item() item.name = event["SUMMARY"] @@ -138,6 +139,8 @@ class cls_caldav_client(): caldav_agenda_config_url = caldav_cfg["task_config"] + events = None + def __init__(self): @@ -149,6 +152,7 @@ class cls_caldav_client(): self.a_task = self.data.calendar(name="Tâche") self.a_team = self.data.calendar(name="Équipage_test") + self.get_events_by_date(self.a_team) def init_task_management(self): if datetime.today().day == 1 and datetime.today().hour == 1: @@ -176,6 +180,52 @@ class cls_caldav_client(): summary="Do the needful", ) + def get_events_by_date(self,calandar,date=None ): + if date is None: + date = datetime.now() + + tomorow = date + timedelta(days=6) + self.events = calandar.date_search( + start=datetime(date.year, date.month, date.day), end=datetime(tomorow.year, tomorow.month, tomorow.day), expand=False + ) + + for event in self.events: + self.format_data_event(event) + return + + def format_data_event(self,event): + summary = event.vobject_instance.vevent.summary.value + key = summary.split("-") + equipage = key[1].split("&") + team_1 = "" + team_2 = "" + updated = False + if "MC" not in equipage[0]: + team_1 = equipage[0].strip().replace('#', '') + try: + user = User.objects.get(username=f"mc{team_1}@clerc.ch").last_name + key[1] = key[1].replace(team_1, f"MC{team_1} {user}") + updated = True + except : + print(f"Error: mc{team_1}@clerc.ch @{summary}") + return None + if "MC" not in equipage[1]: + team_2 = equipage[1].strip().replace('#','') + try: + user = User.objects.get(username=f"mc{team_2}@clerc.ch").last_name + key[1] = key[1].replace(team_2, f"MC{team_2} {user}") + updated = True + except : + print(f"Error: mc{team_2}@clerc.ch @{summary}") + return None + if updated: + event.vobject_instance.vevent.summary.value = f"{key[0]} - {key[1]}" + event.save() + + + + + def copy_caldav_data(self, calandar=None): ctx = ssl.create_default_context() diff --git a/mycaldav/views.py b/mycaldav/views.py index 408a453..3a9c1ab 100644 --- a/mycaldav/views.py +++ b/mycaldav/views.py @@ -75,7 +75,7 @@ def view_team_pdf_caldav(request): start = datetime.strptime(request.GET['dt'], "%d.%m.%Y") myClient = cls_caldav_client() - #render_pdf(o_caldav, start) + render_pdf(o_caldav, caldavClient=myClient, date=start) return FileResponse(open('test.pdf', 'rb'), as_attachment=False, content_type='application/pdf')