"""Pydantic v2 models for Scenar Creator v4.""" import uuid from datetime import date as date_type, timedelta from typing import List, Optional from pydantic import BaseModel, Field class Block(BaseModel): id: str = Field(default_factory=lambda: str(uuid.uuid4())) date: str # "YYYY-MM-DD" start: str # "HH:MM" (can be > 24:00 for overnight continuation) end: str # "HH:MM" (if end < start → overnight block) title: str type_id: str responsible: Optional[str] = None notes: Optional[str] = None class ProgramType(BaseModel): id: str name: str color: str # "#RRGGBB" class EventInfo(BaseModel): title: str subtitle: Optional[str] = None # Multi-day: date_from → date_to (inclusive). Backward compat: date = date_from. date: Optional[str] = None # legacy / backward compat date_from: Optional[str] = None date_to: Optional[str] = None location: Optional[str] = None class ScenarioDocument(BaseModel): version: str = "1.0" event: EventInfo program_types: List[ProgramType] blocks: List[Block] def get_sorted_dates(self) -> List[str]: """Return sorted list of unique block dates.""" dates = sorted(set(b.date for b in self.blocks)) return dates