diff --git a/apps/api/plane/api/views/issue.py b/apps/api/plane/api/views/issue.py index fe32fe3fddd..1200c91c9cb 100644 --- a/apps/api/plane/api/views/issue.py +++ b/apps/api/plane/api/views/issue.py @@ -50,6 +50,8 @@ IssueLinkUpdateSerializer, LabelCreateUpdateSerializer, ) +from plane.utils.filters import ComplexFilterBackend, IssueFilterSet +from plane.utils.issue_filters import issue_filters from plane.app.permissions import ( ProjectEntityPermission, ProjectLitePermission, @@ -245,6 +247,8 @@ class IssueListCreateAPIEndpoint(BaseAPIView): permission_classes = [ProjectEntityPermission] serializer_class = IssueSerializer use_read_replica = True + filter_backends = (ComplexFilterBackend,) + filterset_class = IssueFilterSet def get_queryset(self): return ( @@ -343,6 +347,15 @@ def get(self, request, slug, project_id): total_issue_queryset = Issue.issue_objects.filter(project_id=project_id, workspace__slug=slug) + # Apply both JSON filters (ComplexFilterBackend) and legacy query param filters + issue_queryset = self.filter_queryset(issue_queryset) + total_issue_queryset = self.filter_queryset(total_issue_queryset) + + legacy_filters = issue_filters(request.query_params, "GET") + if legacy_filters: + issue_queryset = issue_queryset.filter(**legacy_filters) + total_issue_queryset = total_issue_queryset.filter(**legacy_filters) + # Priority Ordering if order_by_param == "priority" or order_by_param == "-priority": priority_order = priority_order if order_by_param == "priority" else priority_order[::-1]