Untitled
4ae4d
plain_text
02/16/2026 11:36 AM
3.9 KB
8
Indexable
--- src/backend/app/schemas/event.py ---
from datetime import datetime
from uuid import UUID
from pydantic import BaseModel, ConfigDict, Field, constr
from .app_tag import ResponseAppTagSchema
from .base import TimestampSchema
class BaseEvent(BaseModel):
model_config = ConfigDict(from_attributes=True)
name: str
description: str | None = None
location: str | None = None
tags: list[ResponseAppTagSchema] = Field(default_factory=list)
bonus_code: str
points: int
date: datetime
class EventCreateSchema(BaseModel):
"""то, что приходит от бота при создании мероприятия"""
model_config = ConfigDict(extra="forbid")
name: constr[max_length=128]
description: str | None = None
location: constr[max_length=255] | None = None
app_tag_ids: list[UUID] = Field(default_factory=list)
bonus_code: constr[max_length=16]
points: int = 0
date: datetime
city_id: UUID
creator_id: UUID | None = None
class RequestEventSchema(BaseEvent):
pass
class ResponseEventSchema(BaseEvent, TimestampSchema):
id: UUID
creator_id: UUID | None = (
None # TODO решить, оставляем ли или всегда приписываем UUID создателя
)
creator_name: str | None = None
city_id: UUID
class EventSignUpSchema(BaseModel):
event_id: UUID
messenger_id: int
class EventSignOutSchema(BaseModel):
participation_id: UUID
class EventCodeSchema(EventSignOutSchema):
bonus_code: str
class EventUpdateSchema(BaseModel):
model_config = ConfigDict(extra="forbid")
name: constr[max_length=128] | None = None
description: str | None = None
location: str | None = None
app_tag_ids: list[UUID] | None = None
bonus_code: constr[max_length=16] | None = None
points: int | None = None
date: datetime | None = None
city_id: UUID | None = None
creator_id: UUID | None = None
class ResponseEventParticipantSchema(BaseModel):
"""один участник мероприятия"""
model_config = ConfigDict(extra="forbid")
participation_id: UUID
is_claimed: bool
user_id: UUID
firstname: str | None = None
messenger_id: int
employee_number: int
points: int
--- src/backend/app/schemas/report.py ---
from __future__ import annotations
from uuid import UUID
from pydantic import BaseModel, ConfigDict, Field, constr
from .base import TimestampSchema
class ReportCreateSchema(BaseModel):
model_config = ConfigDict(extra="forbid")
event_id: UUID
requester_messenger_id: int
how_it_went: constr[min_length=1]
beneficiaries_count: int | None = None
class ResponseReportSchema(TimestampSchema):
model_config = ConfigDict(from_attributes=True)
id: UUID
event_id: UUID
how_it_went: str
beneficiaries_count: int | None = None
participants_count_snapshot: int = Field(..., ge=0)
Editor is loading...
Leave a Comment