schemas.py (1351B)
1 from pydantic import BaseModel, field_validator 2 import re 3 4 5 class CalendarCreate(BaseModel): 6 name: str 7 color: str = "#88C0D0" 8 invite_usernames: list[str] = [] 9 10 @field_validator("color") 11 @classmethod 12 def valid_color(cls, v: str) -> str: 13 if not re.match(r"^#[0-9a-fA-F]{6}$", v): 14 raise ValueError("color must be a hex color like #88C0D0") 15 return v 16 17 18 class CalendarUpdate(BaseModel): 19 name: str | None = None 20 color: str | None = None 21 22 @field_validator("color") 23 @classmethod 24 def valid_color(cls, v: str | None) -> str | None: 25 if v is not None and not re.match(r"^#[0-9a-fA-F]{6}$", v): 26 raise ValueError("color must be a hex color like #88C0D0") 27 return v 28 29 30 class VisibilityUpdate(BaseModel): 31 is_visible: bool 32 33 34 class InviteRequest(BaseModel): 35 email: str 36 37 38 class AddMemberRequest(BaseModel): 39 username: str 40 41 42 class EventCreate(BaseModel): 43 calendar_id: int 44 title: str 45 start_dt: str 46 end_dt: str 47 description: str | None = None 48 all_day: bool = False 49 attendee_usernames: list[str] = [] 50 51 52 class EventUpdate(BaseModel): 53 title: str | None = None 54 start_dt: str | None = None 55 end_dt: str | None = None 56 description: str | None = None 57 all_day: bool | None = None 58 attendee_usernames: list[str] | None = None