ajout de system impression team_pdf
This commit is contained in:
@@ -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()
|
||||||
|
@@ -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()
|
||||||
|
@@ -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')
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user