ajout de system impression team_pdf

This commit is contained in:
Ambulance Clerc
2022-09-26 10:44:57 +02:00
parent 708c1a5bc5
commit 58a789643d
3 changed files with 59 additions and 5 deletions

View File

@@ -16,6 +16,7 @@ BLACK = (0, 0, 0)
class PDF(FPDF): class PDF(FPDF):
o_caldav = None o_caldav = None
caldavClient = None
start = None start = None
end = None end = None
def init_date(self,date): def init_date(self,date):
@@ -47,6 +48,7 @@ class PDF(FPDF):
def draw_week(self): def draw_week(self):
self.set_font('Arial', '', 10) self.set_font('Arial', '', 10)
self.caldavClient.get_events_by_date(self.caldavClient.a_team, self.start)
self.ln() self.ln()
days_fr = ["Lundi","Mardi","Mercredi","Jeudi", "Vendredi", "Samedi", "Dimanche"] days_fr = ["Lundi","Mardi","Mercredi","Jeudi", "Vendredi", "Samedi", "Dimanche"]
@@ -55,7 +57,9 @@ class PDF(FPDF):
tmp_y = self.get_y() tmp_y = self.get_y()
max_y = tmp_y max_y = tmp_y
dt = self.start + timedelta(days=d) dt = self.start + timedelta(days=d)
self.o_caldav.get_caldav_data(periode=1, date=dt) self.o_caldav.get_caldav_data(periode=1, date=dt)
self.o_caldav.sort_array_by_key(reverse=True) 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=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") 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=115, h=5, align="L", txt=f"", ln=0)
self.cell(w=75, h=5, align="L", txt=f"Nuit", ln=1, border="B") self.cell(w=75, h=5, align="L", txt=f"Nuit", ln=1, border="B")
for item in self.o_caldav.night: 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'): if item.str_start_date != dt.strftime('%d.%m'):
print("pass")
continue continue
self.set_fill_color(255,143,0) 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 = PDF(orientation='P', unit='mm', format='A4')
pdf.o_caldav = caldav_object pdf.o_caldav = caldav_object
pdf.caldavClient = caldavClient
pdf.init_date(date) pdf.init_date(date)
pdf.set_margins(4,2,4) pdf.set_margins(4,2,4)
pdf.add_page() pdf.add_page()

View File

@@ -1,4 +1,5 @@
from datetime import datetime, timedelta, time from datetime import datetime, timedelta, time
from django.contrib.auth.models import User
import datetime as Datetime import datetime as Datetime
import pickle import pickle
import os import os
@@ -13,6 +14,7 @@ import ssl
from icalendar import Calendar, Event from icalendar import Calendar, Event
import recurring_ical_events import recurring_ical_events
import caldav import caldav
from mycaldav.settings import * from mycaldav.settings import *
# Create your models here. # Create your models here.
@@ -71,7 +73,6 @@ class cls_caldav():
self.parse_data(events) self.parse_data(events)
def parse_data(self, events): def parse_data(self, events):
for event in events: for event in events:
item = _caldav_item() item = _caldav_item()
item.name = event["SUMMARY"] item.name = event["SUMMARY"]
@@ -138,6 +139,8 @@ class cls_caldav_client():
caldav_agenda_config_url = caldav_cfg["task_config"] caldav_agenda_config_url = caldav_cfg["task_config"]
events = None
def __init__(self): def __init__(self):
@@ -149,6 +152,7 @@ class cls_caldav_client():
self.a_task = self.data.calendar(name="Tâche") self.a_task = self.data.calendar(name="Tâche")
self.a_team = self.data.calendar(name="Équipage_test") self.a_team = self.data.calendar(name="Équipage_test")
self.get_events_by_date(self.a_team)
def init_task_management(self): def init_task_management(self):
if datetime.today().day == 1 and datetime.today().hour == 1: if datetime.today().day == 1 and datetime.today().hour == 1:
@@ -176,6 +180,52 @@ class cls_caldav_client():
summary="Do the needful", 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): def copy_caldav_data(self, calandar=None):
ctx = ssl.create_default_context() ctx = ssl.create_default_context()

View File

@@ -75,7 +75,7 @@ def view_team_pdf_caldav(request):
start = datetime.strptime(request.GET['dt'], "%d.%m.%Y") start = datetime.strptime(request.GET['dt'], "%d.%m.%Y")
myClient = cls_caldav_client() 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') return FileResponse(open('test.pdf', 'rb'), as_attachment=False, content_type='application/pdf')