🔊 improve logging
This commit is contained in:
parent
bab3ef6ec0
commit
16984bdbb4
|
|
@ -1,4 +1,5 @@
|
||||||
import email.utils
|
import email.utils
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import smtplib
|
import smtplib
|
||||||
|
|
@ -30,9 +31,6 @@ class DavEvent:
|
||||||
organizer: str
|
organizer: str
|
||||||
calendar: Calendar
|
calendar: Calendar
|
||||||
obj: CalendarObjectResource
|
obj: CalendarObjectResource
|
||||||
is_cancelled: bool
|
|
||||||
is_recurring: bool
|
|
||||||
is_prioritized: bool
|
|
||||||
missing_required_fields: list
|
missing_required_fields: list
|
||||||
|
|
||||||
def __init__(self, event: CalendarObjectResource):
|
def __init__(self, event: CalendarObjectResource):
|
||||||
|
|
@ -164,7 +162,7 @@ class DavEvent:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.obj.icalendar_component["status"] = "CANCELLED"
|
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]:
|
def serialize(self) -> dict[str, str | datetime | timedelta]:
|
||||||
"""
|
"""
|
||||||
|
|
@ -188,6 +186,28 @@ class DavEvent:
|
||||||
"missing_required_fields": self.missing_required_fields,
|
"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
|
@staticmethod
|
||||||
def _handle_date(date_value: datetime | date) -> datetime:
|
def _handle_date(date_value: datetime | date) -> datetime:
|
||||||
"""
|
"""
|
||||||
|
|
@ -195,10 +215,8 @@ class DavEvent:
|
||||||
"""
|
"""
|
||||||
if isinstance(date_value, datetime):
|
if isinstance(date_value, datetime):
|
||||||
date_value = date_value.astimezone(tz)
|
date_value = date_value.astimezone(tz)
|
||||||
elif isinstance(date_value, date):
|
|
||||||
date_value = tz.localize(datetime.combine(date_value, datetime.min.time()))
|
|
||||||
else:
|
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
|
return date_value
|
||||||
|
|
||||||
|
|
@ -296,6 +314,8 @@ def clear(target_calendars: list, is_test: bool=False) -> dict:
|
||||||
|
|
||||||
# Find overlapping events
|
# Find overlapping events
|
||||||
overlapping_events = find_overlapping_events(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
|
# Delete overlapping events and send emails to organizers
|
||||||
for overlap in overlapping_events.values():
|
for overlap in overlapping_events.values():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue