diff --git a/program/utils.py b/program/utils.py index cebde5419319d98feb58096bed21f38aba26b0ae..aff939562d1261d06c94280bfa9cb5aa7452f5a3 100644 --- a/program/utils.py +++ b/program/utils.py @@ -24,7 +24,6 @@ from datetime import date, datetime, time from typing import Dict, Optional, Tuple, Union import requests -from rest_framework import exceptions from django.conf import settings from django.utils import timezone @@ -126,22 +125,3 @@ def delete_links(instance: Union["Host", "Note", "Show"]) -> Union["Host", "Note link.delete(keep_parents=True) return instance - - -class NestedObjectFinderMixin: - ROUTE_FILTER_LOOKUPS = {} - - def _get_route_filters(self) -> Dict[str, int]: - filter_kwargs = {} - for key, value in self.kwargs.items(): - if key in self.ROUTE_FILTER_LOOKUPS: - try: - filter_kwargs[self.ROUTE_FILTER_LOOKUPS[key]] = int(value) - except ValueError: - raise exceptions.ValidationError( - detail=f"{key} must map to an integer value.", code="invalid-pk" - ) - return filter_kwargs - - def get_queryset(self): - return super().get_queryset().filter(**self._get_route_filters()) diff --git a/program/views.py b/program/views.py index 772cdf57145a5fca335964f991ae0f7e5d89daea..42593a8a78db2e71a99f5bd4d468cf94fb0641fe 100644 --- a/program/views.py +++ b/program/views.py @@ -80,7 +80,7 @@ from program.serializers import ( UserSerializer, ) from program.services import get_timerange_timeslots, resolve_conflicts -from program.utils import NestedObjectFinderMixin, get_values, parse_date +from program.utils import get_values, parse_date logger = logging.getLogger(__name__) @@ -514,14 +514,7 @@ class APIRRuleViewSet(viewsets.ModelViewSet): destroy=extend_schema(summary="Delete an existing schedule."), list=extend_schema(summary="List all schedules."), ) -class APIScheduleViewSet( - NestedObjectFinderMixin, - viewsets.ModelViewSet, -): - ROUTE_FILTER_LOOKUPS = { - "show_pk": "show", - } - +class APIScheduleViewSet(viewsets.ModelViewSet): filterset_class = filters.ScheduleFilterSet pagination_class = LimitOffsetPagination queryset = Schedule.objects.all() @@ -648,18 +641,12 @@ class APIScheduleViewSet( ), ) class APITimeSlotViewSet( - NestedObjectFinderMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet, ): - ROUTE_FILTER_LOOKUPS = { - "show_pk": "schedule__show", - "schedule_pk": "schedule", - } - filterset_class = filters.TimeSlotFilterSet pagination_class = LimitOffsetPagination queryset = TimeSlot.objects.all().order_by("-start") @@ -696,15 +683,7 @@ class APITimeSlotViewSet( destroy=extend_schema(summary="Delete an existing note."), list=extend_schema(summary="List all notes."), ) -class APINoteViewSet( - NestedObjectFinderMixin, - viewsets.ModelViewSet, -): - ROUTE_FILTER_LOOKUPS = { - "show_pk": "timeslot__show", - "timeslot_pk": "timeslot", - } - +class APINoteViewSet(viewsets.ModelViewSet): filterset_class = filters.NoteFilterSet pagination_class = LimitOffsetPagination serializer_class = NoteSerializer