diff --git a/SAS/TMSS/backend/src/tmss/workflowapp/viewsets/schedulingunitflow.py b/SAS/TMSS/backend/src/tmss/workflowapp/viewsets/schedulingunitflow.py index 618f07a4d34de378833a15dbfcc80d3d9053f9c5..78adf2e6ab7ffa0d3f8134a60682cdd47f109711 100644 --- a/SAS/TMSS/backend/src/tmss/workflowapp/viewsets/schedulingunitflow.py +++ b/SAS/TMSS/backend/src/tmss/workflowapp/viewsets/schedulingunitflow.py @@ -15,11 +15,13 @@ from rest_framework.filters import OrderingFilter from drf_yasg.utils import swagger_auto_schema from django_filters import rest_framework as filters +import django_property_filter as property_filters from viewflow.flow.views import FlowMixin from viewflow.activation import STATUS_CHOICES from lofar.sas.tmss.tmss.workflowapp import models +from lofar.sas.tmss.tmss.tmssapp.models import SchedulingUnitStatus, ProjectCategory from lofar.sas.tmss.tmss.tmssapp.adapters.keycloak import get_user_mapping from lofar.sas.tmss.tmss.tmssapp.viewsets.metadata import LOFARDefaultMetadata from lofar.sas.tmss.tmss.tmssapp.viewsets.lofar_viewset import LOFARFilterBackend, FILTER_OVERRIDES @@ -100,7 +102,7 @@ class SchedulingUnitProcessViewSet(TMSSFilterAndPermissionModelViewSet): serializer_class = serializers.SchedulingUnitProcessSerializer filter_class = SchedulingUnitProcessFilter # note that this breaks other filter backends from LOFARViewSet -class SchedulingUnitTaskFilter(filters.FilterSet): +class SchedulingUnitTaskFilter(property_filters.PropertyFilterSet): id = NumberInFilter(field_name='id', lookup_expr='in') flow_task = CharInFilter(field_name='flow_task', method='filter_flow_task') flow_task_type = filters.CharFilter(field_name='flow_task_type', lookup_expr='icontains') @@ -114,6 +116,11 @@ class SchedulingUnitTaskFilter(filters.FilterSet): owner_email_isnull = filters.BooleanFilter(label='owner_email [isnull]', field_name='owner__email', lookup_expr='isnull') owner_username = filters.CharFilter(field_name='owner__username', lookup_expr='icontains') owner_username_isnull = filters.BooleanFilter(label='owner_username [isnull]', field_name='owner__username', lookup_expr='isnull') + project_name = property_filters.PropertyCharFilter(field_name='project__name', lookup_expr='icontains') + project_category = property_filters.PropertyChoiceFilter(label='project category', field_name='project__project_category', choices=[(c.value, c.value) for c in ProjectCategory.Choices]) + scheduling_unit_status = filters.MultipleChoiceFilter(label='scheduling unit status [any]', field_name='process__schedulingunitprocess__su__status', choices=[(c.value, c.value) for c in SchedulingUnitStatus.Choices], lookup_expr='iexact') + scheduling_unit_id = NumberInFilter(field_name='process__schedulingunitprocess__su__id', lookup_expr='in') + scheduling_unit_name = filters.CharFilter(field_name='process__schedulingunitprocess__su__name', lookup_expr='icontains') def filter_flow_task(self, queryset, name, values): ids = []