🔊 improve logging

This commit is contained in:
Marc Koch 2025-08-19 14:42:01 +02:00
parent bab3ef6ec0
commit 16984bdbb4
Signed by: marc
GPG Key ID: 12406554CFB028B9
1 changed files with 27 additions and 7 deletions

View File

@ -1,4 +1,5 @@
import email.utils
import json
import os
import re
import smtplib
@ -30,9 +31,6 @@ class DavEvent:
organizer: str
calendar: Calendar
obj: CalendarObjectResource
is_cancelled: bool
is_recurring: bool
is_prioritized: bool
missing_required_fields: list
def __init__(self, event: CalendarObjectResource):
@ -164,7 +162,7 @@ class DavEvent:
:return:
"""
self.obj.icalendar_component["status"] = "CANCELLED"
self.obj.save(no_create=True)
self.obj.save(no_create=True, increase_seqno=False)
def serialize(self) -> dict[str, str | datetime | timedelta]:
"""
@ -188,6 +186,28 @@ class DavEvent:
"missing_required_fields": self.missing_required_fields,
}
def dumps(self, indent=4, datetime_format="%Y-%m-%d %X") -> str:
"""
Dump a json string with the event data.
:return: string with json data
"""
return json.dumps({
"uid": self.uid,
"name": self.name,
"start": self.start.strftime(datetime_format),
"end": self.end.strftime(datetime_format),
"duration": self.duration.total_seconds(),
"created": self.created.strftime(datetime_format),
"status": self.status,
"organizer": self.organizer,
"calendar_id": self.calendar.id,
"calendar_name": self.calendar.name,
"is_cancelled": self.is_cancelled,
"is_recurring": self.is_recurring,
"is_prioritized": self.is_prioritized,
"missing_required_fields": self.missing_required_fields,
}, indent=indent)
@staticmethod
def _handle_date(date_value: datetime | date) -> datetime:
"""
@ -195,10 +215,8 @@ class DavEvent:
"""
if isinstance(date_value, datetime):
date_value = date_value.astimezone(tz)
elif isinstance(date_value, date):
date_value = tz.localize(datetime.combine(date_value, datetime.min.time()))
else:
raise ValueError(f"date_value must be a datetime or date object, {type(date_value)} given.")
date_value = tz.localize(datetime.combine(date_value, datetime.min.time()))
return date_value
@ -296,6 +314,8 @@ def clear(target_calendars: list, is_test: bool=False) -> dict:
# Find overlapping events
overlapping_events = find_overlapping_events(events)
overlapping_events_json = json.dumps([json.loads(o.get("event").dumps()) for _, o in overlapping_events.items()], indent=2)
print(f"Found overlapping events:\n{overlapping_events_json}")
# Delete overlapping events and send emails to organizers
for overlap in overlapping_events.values():