reservable rooms API

This commit is contained in:
imperosol
2025-04-22 12:36:15 +02:00
parent 8e0e8b6ffe
commit 46dd863b22
6 changed files with 176 additions and 1 deletions

46
reservation/schemas.py Normal file
View File

@ -0,0 +1,46 @@
from datetime import datetime
from ninja import FilterSchema, ModelSchema
from pydantic import Field
from club.schemas import ClubSchema
from core.schemas import SimpleUserSchema
from reservation.models import ReservationSlot, Room
class RoomFilterSchema(FilterSchema):
club: set[int] | None = Field(None, q="club_id__in")
class RoomSchema(ModelSchema):
class Meta:
model = Room
fields = ["id", "name", "description", "location"]
club: ClubSchema
url: str
@staticmethod
def resolve_url(obj: Room):
return obj.get_absolute_url()
@staticmethod
def resolve_location(obj: Room):
return obj.get_location_display()
class SlotFilterSchema(FilterSchema):
after: datetime = Field(default=None, q="end_at__gt")
before: datetime = Field(default=None, q="start_at__lt")
room: set[int] | None = None
club: set[int] | None = None
class SlotSchema(ModelSchema):
class Meta:
model = ReservationSlot
fields = ["id", "room", "nb_people", "comment"]
start: datetime = Field(alias="start_at")
end: datetime = Field(alias="end_at")
author: SimpleUserSchema