52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class ActivityListItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
id: int
|
|
title: str
|
|
category: str | None = None
|
|
cover_image: str | None = None
|
|
start_time: str
|
|
end_time: str
|
|
signup_deadline: str | None = None
|
|
location: str | None = None
|
|
status: int
|
|
capacity_male: int
|
|
capacity_female: int
|
|
registered_male: int
|
|
registered_female: int
|
|
is_registered: bool
|
|
can_register: bool
|
|
match_limit: int | None = None
|
|
match_count: int | None = None
|
|
match_remaining: int | None = None
|
|
|
|
|
|
class ActivityDetailResponse(ActivityListItem):
|
|
description: str | None = None
|
|
require_audit: int
|
|
registered_preview: list[dict]
|
|
|
|
|
|
class ActivityRegisterResponse(BaseModel):
|
|
registration_id: int
|
|
status: int
|
|
message: str
|
|
|
|
|
|
class AdminActivityUpsertRequest(BaseModel):
|
|
title: str
|
|
description: str | None = None
|
|
category: str | None = None
|
|
location: str | None = None
|
|
cover_image: str | None = None
|
|
start_time: str
|
|
end_time: str
|
|
signup_deadline: str | None = None
|
|
capacity_male: int = 0
|
|
capacity_female: int = 0
|
|
match_window_hours: int = 48
|
|
require_audit: bool = True
|
|
is_published: bool = False
|