Basic event management
This commit is contained in:
@@ -30,6 +30,13 @@ from .schemas import (
|
||||
EmailTemplateCreate,
|
||||
EmailTemplateUpdate,
|
||||
EmailTemplateResponse,
|
||||
EventBase,
|
||||
EventCreate,
|
||||
EventUpdate,
|
||||
EventResponse,
|
||||
EventRSVPBase,
|
||||
EventRSVPUpdate,
|
||||
EventRSVPResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
@@ -64,4 +71,11 @@ __all__ = [
|
||||
"EmailTemplateCreate",
|
||||
"EmailTemplateUpdate",
|
||||
"EmailTemplateResponse",
|
||||
"EventBase",
|
||||
"EventCreate",
|
||||
"EventUpdate",
|
||||
"EventResponse",
|
||||
"EventRSVPBase",
|
||||
"EventRSVPUpdate",
|
||||
"EventRSVPResponse",
|
||||
]
|
||||
|
||||
@@ -229,3 +229,58 @@ class EmailTemplateResponse(EmailTemplateBase):
|
||||
is_active: bool
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
# Event Schemas
|
||||
class EventBase(BaseModel):
|
||||
title: str = Field(..., min_length=1, max_length=255)
|
||||
description: Optional[str] = None
|
||||
event_date: datetime
|
||||
event_time: Optional[str] = Field(None, pattern=r'^([01]?[0-9]|2[0-3]):[0-5][0-9]$')
|
||||
location: Optional[str] = None
|
||||
max_attendees: Optional[int] = Field(None, gt=0)
|
||||
|
||||
|
||||
class EventCreate(EventBase):
|
||||
pass
|
||||
|
||||
|
||||
class EventUpdate(BaseModel):
|
||||
title: Optional[str] = Field(None, min_length=1, max_length=255)
|
||||
description: Optional[str] = None
|
||||
event_date: Optional[datetime] = None
|
||||
event_time: Optional[str] = Field(None, pattern=r'^([01]?[0-9]|2[0-3]):[0-5][0-9]$')
|
||||
location: Optional[str] = None
|
||||
max_attendees: Optional[int] = Field(None, gt=0)
|
||||
status: Optional[str] = None
|
||||
|
||||
|
||||
class EventResponse(EventBase):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
status: str
|
||||
created_by: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
# Event RSVP Schemas
|
||||
class EventRSVPBase(BaseModel):
|
||||
status: str = Field(..., pattern="^(pending|attending|not_attending|maybe)$")
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class EventRSVPUpdate(EventRSVPBase):
|
||||
pass
|
||||
|
||||
|
||||
class EventRSVPResponse(EventRSVPBase):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
event_id: int
|
||||
user_id: int
|
||||
attended: bool
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
Reference in New Issue
Block a user