mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-20 08:49:24 +00:00
reservable rooms API
This commit is contained in:
46
reservation/schemas.py
Normal file
46
reservation/schemas.py
Normal 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
|
Reference in New Issue
Block a user