""" This file contains the viewsets (based on the elsewhere defined data models and serializers) """ from django.shortcuts import get_object_or_404 from rest_framework import viewsets from .lofar_viewset import LOFARViewSet from .. import models from .. import serializers from django_filters import rest_framework as filters class SubtaskConnectorViewSet(LOFARViewSet): queryset = models.SubtaskConnector.objects.all() serializer_class = serializers.SubtaskConnectorSerializer class SubtaskStateViewSet(LOFARViewSet): queryset = models.SubtaskState.objects.all() serializer_class = serializers.SubtaskStateSerializer class SubtaskTypeViewSet(LOFARViewSet): queryset = models.SubtaskType.objects.all() serializer_class = serializers.SubtaskTypeSerializer class StationTypeViewSet(LOFARViewSet): queryset = models.StationType.objects.all() serializer_class = serializers.StationTypeSerializer class AlgorithmViewSet(LOFARViewSet): queryset = models.Algorithm.objects.all() serializer_class = serializers.AlgorithmSerializer class ScheduleMethodViewSet(LOFARViewSet): queryset = models.ScheduleMethod.objects.all() serializer_class = serializers.ScheduleMethodSerializer class SubtaskTemplateViewSet(LOFARViewSet): queryset = models.SubtaskTemplate.objects.all() serializer_class = serializers.SubtaskTemplateSerializer def get_queryset(self): queryset = models.SubtaskTemplate.objects.all() # query by name name = self.request.query_params.get('name', None) if name is not None: return queryset.filter(name=name) return queryset class DefaultSubtaskTemplateViewSet(LOFARViewSet): queryset = models.DefaultSubtaskTemplate.objects.all() serializer_class = serializers.DefaultSubtaskTemplateSerializer class DataproductSpecificationsTemplateViewSet(LOFARViewSet): queryset = models.DataproductSpecificationsTemplate.objects.all() serializer_class = serializers.DataproductSpecificationsTemplateSerializer class DefaultDataproductSpecificationsTemplateViewSet(LOFARViewSet): queryset = models.DefaultDataproductSpecificationsTemplate.objects.all() serializer_class = serializers.DefaultDataproductSpecificationsTemplateSerializer class SubtaskInputSelectionTemplateViewSet(LOFARViewSet): queryset = models.SubtaskInputSelectionTemplate.objects.all() serializer_class = serializers.SubtaskInputSelectionTemplateSerializer class DataproductFeedbackTemplateViewSet(LOFARViewSet): queryset = models.DataproductFeedbackTemplate.objects.all() serializer_class = serializers.DataproductFeedbackTemplateSerializer class subTaskFilter(filters.FilterSet): class Meta: model = Subtask fields = {} class SubtaskViewSet(LOFARViewSet): queryset = models.Subtask.objects.all() serializer_class = serializers.SubtaskSerializer filter_class = subTaskFilter def get_queryset(self): if 'task_blueprint_pk' in self.kwargs: task_blueprint = get_object_or_404(models.TaskBlueprint, pk=self.kwargs['task_blueprint_pk']) return task_blueprint.subtasks.all() else: return models.Subtask.objects.all() class SubtaskInputViewSet(LOFARViewSet): queryset = models.SubtaskInput.objects.all() serializer_class = serializers.SubtaskInputSerializer class SubtaskOutputViewSet(LOFARViewSet): queryset = models.SubtaskOutput.objects.all() serializer_class = serializers.SubtaskOutputSerializer class DataproductViewSet(LOFARViewSet): queryset = models.Dataproduct.objects.all() serializer_class = serializers.DataproductSerializer class AntennaSetViewSet(LOFARViewSet): queryset = models.AntennaSet.objects.all() serializer_class = serializers.AntennaSetSerializer class DataproductTransformViewSet(LOFARViewSet): queryset = models.DataproductTransform.objects.all() serializer_class = serializers.DataproductTransformSerializer class FilesystemViewSet(LOFARViewSet): queryset = models.Filesystem.objects.all() serializer_class = serializers.FilesystemSerializer class ClusterViewSet(LOFARViewSet): queryset = models.Cluster.objects.all() serializer_class = serializers.ClusterSerializer class DataproductArchiveInfoViewSet(LOFARViewSet): queryset = models.DataproductArchiveInfo.objects.all() serializer_class = serializers.DataproductArchiveInfoSerializer class DataproductHashViewSet(LOFARViewSet): queryset = models.DataproductHash.objects.all() serializer_class = serializers.DataproductHashSerializer # --- JSON class SubtaskViewSetJSONeditorOnline(LOFARViewSet): queryset = models.Subtask.objects.all() serializer_class = serializers.SubtaskSerializerJSONeditorOnline def get_view_name(self): # override name because DRF auto-naming does not produce something usable here name = "Subtask" if self.suffix: name += ' ' + self.suffix return name def get_queryset(self): if 'task_blueprint_pk' in self.kwargs: task_blueprint = get_object_or_404(models.TaskBlueprint, pk=self.kwargs['task_blueprint_pk']) return task_blueprint.subtasks.all() else: return models.Subtask.objects.all()