1+ from enum import StrEnum
2+
13from core .models import BaseAbstractModelQuerySet
24from django .db .models import Q
35from django_filters import rest_framework as filters
46from django_filters .constants import EMPTY_VALUES
57from event .filters import EventFilterMixin
8+ from event .presentation .models import PresentationBookmark
9+ from rest_framework import exceptions
10+
11+
12+ class PresentationBookmarkErrorCode (StrEnum ):
13+ EVENT_NOT_FOUND = "event_not_found"
614
715
816class PresentationFilterSet (EventFilterMixin ):
@@ -14,3 +22,22 @@ def filter_by_type_names(self, queryset: BaseAbstractModelQuerySet, name: str, v
1422 return queryset
1523
1624 return queryset .filter (Q (type__name_ko__in = values ) | Q (type__name_en__in = values ))
25+
26+
27+ class PresentationBookmarkFilterSet (filters .FilterSet ):
28+ event = filters .UUIDFilter (method = "filter_by_event" )
29+
30+ class Meta :
31+ model = PresentationBookmark
32+ fields = ["event" ]
33+
34+ def filter_by_event (
35+ self , queryset : BaseAbstractModelQuerySet , name : str , values : list [str ]
36+ ) -> BaseAbstractModelQuerySet :
37+ filtered_queryset = queryset .filter (presentation__type__event__id = values )
38+ if not filtered_queryset .exists ():
39+ raise exceptions .NotFound (
40+ detail = "해당 행사 정보가 없습니다." ,
41+ code = PresentationBookmarkErrorCode .EVENT_NOT_FOUND ,
42+ )
43+ return filtered_queryset
0 commit comments