Thomas Göttgens 2ac7e8a506
feat(api): enable writes to schedule table (#3109)
this fixes #3088

---------

Co-authored-by: Kyle Robbertze <paddatrapper@users.noreply.github.com>
2024-11-18 16:10:54 +00:00

36 lines
1.3 KiB
Python

from django.db import models
from django_filters import rest_framework as filters
from rest_framework import viewsets
from ...mixins import ReadWriteSerializerMixin
from ..models import Schedule
from ..serializers import ReadScheduleSerializer, WriteScheduleSerializer
class ScheduleFilter(filters.FilterSet):
starts = filters.DateTimeFromToRangeFilter(field_name="starts_at")
ends = filters.DateTimeFromToRangeFilter(field_name="ends_at")
position_status = filters.NumberFilter()
broadcasted = filters.NumberFilter()
overbooked = filters.BooleanFilter(method="overbooked_filter")
# pylint: disable=unused-argument
def overbooked_filter(self, queryset, name, value):
# TODO: deduplicate code using the overbooked property
if value:
return queryset.filter(starts_at__gte=models.F("instance__ends_at"))
return queryset.filter(starts_at__lt=models.F("instance__ends_at"))
class Meta:
model = Schedule
fields = [] # type: ignore
class ScheduleViewSet(ReadWriteSerializerMixin, viewsets.ModelViewSet):
queryset = Schedule.objects.all()
read_serializer_class = ReadScheduleSerializer
write_serializer_class = WriteScheduleSerializer
filterset_class = ScheduleFilter
model_permission_name = "schedule"