Files
LeDiscord/backend/schemas/event.py
EvanChal dfeaecce73
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 20s
fix+feat(everything): lot of things
2026-01-25 22:14:48 +01:00

61 lines
1.8 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
from models.event import ParticipationStatus
class EventBase(BaseModel):
title: str = Field(..., min_length=1, max_length=200)
description: Optional[str] = None
location: Optional[str] = None
latitude: Optional[float] = None
longitude: Optional[float] = None
date: datetime
end_date: Optional[datetime] = None
class EventCreate(EventBase):
cover_image: Optional[str] = None
is_private: bool = False
invited_user_ids: Optional[List[int]] = None # Liste des IDs des utilisateurs invités (pour événements privés)
class EventUpdate(BaseModel):
title: Optional[str] = Field(None, min_length=1, max_length=200)
description: Optional[str] = None
location: Optional[str] = None
latitude: Optional[float] = None
longitude: Optional[float] = None
date: Optional[datetime] = None
end_date: Optional[datetime] = None
cover_image: Optional[str] = None
is_private: Optional[bool] = None
class ParticipationResponse(BaseModel):
user_id: int
username: str
full_name: str
avatar_url: Optional[str]
status: ParticipationStatus
response_date: datetime
class Config:
from_attributes = True
class EventResponse(EventBase):
id: int
creator_id: int
creator_name: str
creator_avatar: Optional[str] = None
cover_image: Optional[str]
is_private: bool = False
created_at: datetime
participations: List[ParticipationResponse] = []
present_count: int = 0
absent_count: int = 0
maybe_count: int = 0
pending_count: int = 0
class Config:
from_attributes = True
class ParticipationUpdate(BaseModel):
status: ParticipationStatus