[REFORMAT] Ran black reformat

This commit is contained in:
c-d-p
2025-04-23 01:00:56 +02:00
parent d5d0a24403
commit 1553004efc
38 changed files with 1005 additions and 384 deletions

View File

@@ -1,25 +1,34 @@
# modules/calendar/service.py
from sqlalchemy.orm import Session
from sqlalchemy import or_ # Import or_
from sqlalchemy import or_ # Import or_
from datetime import datetime
from modules.calendar.models import CalendarEvent
from core.exceptions import not_found_exception
from modules.calendar.schemas import CalendarEventCreate, CalendarEventUpdate # Import schemas
from modules.calendar.schemas import (
CalendarEventCreate,
CalendarEventUpdate,
) # Import schemas
def create_calendar_event(db: Session, user_id: int, event_data: CalendarEventCreate):
# Ensure tags is None if not provided or empty list, matching model
tags_to_store = event_data.tags if event_data.tags else None
event = CalendarEvent(
**event_data.model_dump(exclude={'tags'}), # Use model_dump and exclude tags initially
tags=tags_to_store, # Set tags separately
user_id=user_id
**event_data.model_dump(
exclude={"tags"}
), # Use model_dump and exclude tags initially
tags=tags_to_store, # Set tags separately
user_id=user_id,
)
db.add(event)
db.commit()
db.refresh(event)
return event
def get_calendar_events(db: Session, user_id: int, start: datetime | None, end: datetime | None):
def get_calendar_events(
db: Session, user_id: int, start: datetime | None, end: datetime | None
):
"""
Retrieves calendar events for a user, optionally filtered by a date range.
@@ -46,9 +55,13 @@ def get_calendar_events(db: Session, user_id: int, start: datetime | None, end:
query = query.filter(
or_(
# Case 1: Event has duration and overlaps
(CalendarEvent.end is not None) & (CalendarEvent.start < end) & (CalendarEvent.end > start),
(CalendarEvent.end is not None)
& (CalendarEvent.start < end)
& (CalendarEvent.end > start),
# Case 2: Event is a point event within the range
(CalendarEvent.end is None) & (CalendarEvent.start >= start) & (CalendarEvent.start < end)
(CalendarEvent.end is None)
& (CalendarEvent.start >= start)
& (CalendarEvent.start < end),
)
)
# If only start is provided, filter events starting on or after start
@@ -60,37 +73,41 @@ def get_calendar_events(db: Session, user_id: int, start: datetime | None, end:
elif end:
# Includes events with duration ending <= end (or starting before end if end is None)
# Includes point events occurring < end
query = query.filter(
query = query.filter(
or_(
# Event ends before the specified end time
(CalendarEvent.end is not None) & (CalendarEvent.end <= end),
# Point event occurs before the specified end time
(CalendarEvent.end is None) & (CalendarEvent.start < end)
(CalendarEvent.end is None) & (CalendarEvent.start < end),
)
)
# Alternative interpretation for "ending before end": include events that *start* before end
# query = query.filter(CalendarEvent.start < end)
# Alternative interpretation for "ending before end": include events that *start* before end
# query = query.filter(CalendarEvent.start < end)
return query.order_by(CalendarEvent.start).all() # Order by start time
return query.order_by(CalendarEvent.start).all() # Order by start time
def get_calendar_event_by_id(db: Session, user_id: int, event_id: int):
event = db.query(CalendarEvent).filter(
CalendarEvent.id == event_id,
CalendarEvent.user_id == user_id
).first()
event = (
db.query(CalendarEvent)
.filter(CalendarEvent.id == event_id, CalendarEvent.user_id == user_id)
.first()
)
if not event:
raise not_found_exception()
return event
def update_calendar_event(db: Session, user_id: int, event_id: int, event_data: CalendarEventUpdate):
event = get_calendar_event_by_id(db, user_id, event_id) # Reuse get_by_id for check
def update_calendar_event(
db: Session, user_id: int, event_id: int, event_data: CalendarEventUpdate
):
event = get_calendar_event_by_id(db, user_id, event_id) # Reuse get_by_id for check
# Use model_dump with exclude_unset=True to only update provided fields
update_data = event_data.model_dump(exclude_unset=True)
for key, value in update_data.items():
# Ensure tags is handled correctly (set to None if empty list provided)
if key == 'tags' and isinstance(value, list) and not value:
if key == "tags" and isinstance(value, list) and not value:
setattr(event, key, None)
else:
setattr(event, key, value)
@@ -99,7 +116,8 @@ def update_calendar_event(db: Session, user_id: int, event_id: int, event_data:
db.refresh(event)
return event
def delete_calendar_event(db: Session, user_id: int, event_id: int):
event = get_calendar_event_by_id(db, user_id, event_id) # Reuse get_by_id for check
event = get_calendar_event_by_id(db, user_id, event_id) # Reuse get_by_id for check
db.delete(event)
db.commit()
db.commit()