Skip to content
Snippets Groups Projects
Commit 59cbaa7c authored by Jörn Künsemöller's avatar Jörn Künsemöller
Browse files

TMSS-889: Add a bunch of filters on task draft / task blueprint

parent 516b583e
No related branches found
No related tags found
3 merge requests!634WIP: COBALT commissioning delta,!538Resolve TMSS-888,!481Draft: SW-971 SW-973 SW-975: Various fixes to build LOFAR correctly.
......@@ -1048,10 +1048,34 @@ class SchedulingUnitBlueprintNestedViewSet(LOFARNestedViewSet):
else:
return models.SchedulingUnitBlueprint.objects.all()
class TaskDraftPropertyFilter(property_filters.PropertyFilterSet):
id = NumberInFilter(field_name='id', lookup_expr='in')
id_min = filters.NumberFilter(field_name='id', lookup_expr='gte')
id_max = filters.NumberFilter(field_name='id', lookup_expr='lte')
scheduling_unit_draft = ModelChoiceInFilter(field_name='scheduling_unit_draft', lookup_expr='in', queryset=models.SchedulingUnitDraft.objects.all())
scheduling_unit_draft_min = filters.NumberFilter(field_name='scheduling_unit_draft__id', lookup_expr='gte')
scheduling_unit_draft_max = filters.NumberFilter(field_name='scheduling_unit_draft__id', lookup_expr='lte')
scheduling_unit_draft_name = filters.CharFilter(field_name='scheduling_unit_draft__name', lookup_expr='icontains')
task_blueprints = filters.ModelMultipleChoiceFilter(field_name='task_blueprints', queryset=models.TaskBlueprint.objects.all())
duration_min = property_filters.PropertyDurationFilter(field_name='duration', lookup_expr='gte')
duration_max = property_filters.PropertyDurationFilter(field_name='duration', lookup_expr='lte')
created_at = filters.IsoDateTimeFromToRangeFilter(field_name='created_at')
updated_at = filters.IsoDateTimeFromToRangeFilter(field_name='updated_at')
relative_start_time_min = property_filters.PropertyDurationFilter(field_name='relative_start_time', lookup_expr='gte')
relative_start_time_max = property_filters.PropertyDurationFilter(field_name='relative_start_time', lookup_expr='lte')
relative_stop_time_min = property_filters.PropertyDurationFilter(field_name='relative_stop_time', lookup_expr='gte')
relative_stop_time_max = property_filters.PropertyDurationFilter(field_name='relative_stop_time', lookup_expr='lte')
class Meta:
model = models.TaskDraft
fields = '__all__'
filter_overrides = FILTER_OVERRIDES
class TaskDraftViewSet(LOFARViewSet):
queryset = models.TaskDraft.objects.all()
serializer_class = serializers.TaskDraftSerializer
filter_class = TaskDraftPropertyFilter
# prefetch all reverse related references from other models on their related_name to avoid a ton of duplicate queries
queryset = queryset.prefetch_related('first_scheduling_relation') \
......@@ -1175,9 +1199,42 @@ class TaskDraftNestedViewSet(LOFARNestedViewSet):
return models.TaskDraft.objects.all()
class TaskBlueprintPropertyFilter(property_filters.PropertyFilterSet):
id = NumberInFilter(field_name='id', lookup_expr='in')
id_min = filters.NumberFilter(field_name='id', lookup_expr='gte')
id_max = filters.NumberFilter(field_name='id', lookup_expr='lte')
scheduling_unit_blueprint = ModelChoiceInFilter(field_name='scheduling_unit_blueprint', lookup_expr='in', queryset=models.SchedulingUnitBlueprint.objects.all())
scheduling_unit_blueprint_min = filters.NumberFilter(field_name='scheduling_unit_blueprint__id', lookup_expr='gte')
scheduling_unit_blueprint_max = filters.NumberFilter(field_name='scheduling_unit_blueprint__id', lookup_expr='lte')
scheduling_unit_blueprint_name = filters.CharFilter(field_name='scheduling_unit_blueprint__name', lookup_expr='icontains')
draft = ModelChoiceInFilter(field_name='draft', lookup_expr='in', queryset=models.TaskDraft.objects.all())
draft_min = filters.NumberFilter(field_name='draft__id', lookup_expr='gte')
draft_max = filters.NumberFilter(field_name='draft__id', lookup_expr='lte')
duration_min = property_filters.PropertyDurationFilter(field_name='duration', lookup_expr='gte')
duration_max = property_filters.PropertyDurationFilter(field_name='duration', lookup_expr='lte')
created_at = filters.IsoDateTimeFromToRangeFilter(field_name='created_at')
updated_at = filters.IsoDateTimeFromToRangeFilter(field_name='updated_at')
relative_start_time_min = property_filters.PropertyDurationFilter(field_name='relative_start_time', lookup_expr='gte')
relative_start_time_max = property_filters.PropertyDurationFilter(field_name='relative_start_time', lookup_expr='lte')
relative_stop_time_min = property_filters.PropertyDurationFilter(field_name='relative_stop_time', lookup_expr='gte')
relative_stop_time_max = property_filters.PropertyDurationFilter(field_name='relative_stop_time', lookup_expr='lte')
start_time = property_filters.PropertyIsoDateTimeFromToRangeFilter(field_name='start_time')
stop_time = property_filters.PropertyIsoDateTimeFromToRangeFilter(field_name='stop_time')
status = property_filters.PropertyChoiceFilter(field_name='status', choices=tuple((i.value, i.value) for i in models.SubtaskState.Choices), lookup_expr='iexact')
subtask_id = NumberInFilter(field_name='subtasks__id', lookup_expr='in')
subtask_id_min = filters.NumberFilter(field_name='subtasks__id', lookup_expr='gte')
subtask_id_max = filters.NumberFilter(field_name='subtasks__id', lookup_expr='lte')
class Meta:
model = models.TaskBlueprint
fields = '__all__'
filter_overrides = FILTER_OVERRIDES
class TaskBlueprintViewSet(LOFARViewSet):
queryset = models.TaskBlueprint.objects.all()
serializer_class = serializers.TaskBlueprintSerializer
filter_class = TaskBlueprintPropertyFilter
# prefetch all reverse related references from other models on their related_name to avoid a ton of duplicate queries
queryset = queryset.prefetch_related('first_scheduling_relation')\
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment