hook/email: add support for date-only DTSTART/DTEND

This commit is contained in:
Peter Bieringer
2026-04-10 07:46:40 +02:00
parent c6aca9362f
commit 717985763c

View File

@@ -21,13 +21,13 @@ import json
import re import re
import smtplib import smtplib
import ssl import ssl
from datetime import datetime, timedelta from datetime import date, datetime, timedelta
from email.encoders import encode_base64 from email.encoders import encode_base64
from email.mime.base import MIMEBase from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.utils import formatdate from email.utils import formatdate
from typing import Any, Dict, List, Optional, Sequence, Tuple from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
import vobject import vobject
@@ -991,9 +991,14 @@ class Hook(BaseHook):
email_event_end_time = email_event_event.datetime_end # type: ignore email_event_end_time = email_event_event.datetime_end # type: ignore
# Skip notification if the event end time is more than 1 minute in the past. # Skip notification if the event end time is more than 1 minute in the past.
if email_event_end_time and email_event_end_time.time: if email_event_end_time and email_event_end_time.time:
event_end = email_event_end_time.time # type: ignore event_end = email_event_end_time.time
now = datetime.now( now: Union[datetime, date]
event_end.tzinfo) if event_end.tzinfo else datetime.now() # Handle timezone-aware datetime if hasattr(event_end, "tzinfo"):
now = datetime.now(
event_end.tzinfo) if event_end.tzinfo else datetime.now() # Handle timezone-aware datetime
else:
now = date.today()
logger.trace("event_end=%r now=%r", event_end, now)
if event_end < (now - timedelta(minutes=1)): if event_end < (now - timedelta(minutes=1)):
logger.warning("Event end time is in the past, skipping notification for event: %s", logger.warning("Event end time is in the past, skipping notification for event: %s",
email_event_event.uid) email_event_event.uid)