reservable rooms API

This commit is contained in:
imperosol
2025-04-22 12:36:15 +02:00
parent 5f2caf9d61
commit 08abc62e56
6 changed files with 171 additions and 1 deletions

41
reservation/schemas.py Normal file
View File

@ -0,0 +1,41 @@
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
@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", "comment"]
start: datetime = Field(alias="start_at")
end: datetime = Field(alias="end_at")
author: SimpleUserSchema