Skip to content
Snippets Groups Projects
scheduling.py 5.2 KiB
Newer Older
"""
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
    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 = {}


    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()

    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


    queryset = models.Filesystem.objects.all()
    serializer_class = serializers.FilesystemSerializer


    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()