Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
serializers.py 2.06 KiB
from rest_framework import serializers
from .models import DataProduct, Observation, Status, TaskObject
import logging

logger = logging.getLogger(__name__)

class StatusSerializer(serializers.ModelSerializer):

    class Meta:
        model = Status
        fields = ('id','name','timestamp','property_taskID','property_task_type')


class DataProductSerializer(serializers.ModelSerializer):
    # this adds a 'parent_observation' list with hyperlinks to the DataProduct API.
    # note that 'generatedByObservation' is not defined in the DataProduct model, but in the Observation model.

    parent = serializers.PrimaryKeyRelatedField(
        many=False,
        queryset=Observation.objects.all(),
        required=False,
    )

    status_history = serializers.StringRelatedField(
        many=True,
        required=False,
    )

    class Meta:
        model = DataProduct
        fields = ('id','task_type','name','filename','description',
                  'taskID','creationTime','size','quality',
                  'my_status','new_status','status_history','parent',
                  'data_location','node')


class ObservationSerializer(serializers.ModelSerializer):
    # this adds a 'generated_dataproducts' list with hyperlinks to the Observation API.
    # note that 'generated_dataproducts' is not defined in the DataProduct model, but comes from the related_field in Observation.parent.

    generated_dataproducts = serializers.StringRelatedField(
        many=True,
        required=False,
    )

    status_history = serializers.StringRelatedField(
        many=True,
        required=False,
    )

    class Meta:
        model = Observation
        fields = ('id','task_type', 'name','taskID',
                  'field_name','field_ra','field_dec',
                  'creationTime','starttime','endtime', 'duration', 'size',
                  'my_status','new_status','status_history',
                  'generated_dataproducts',
                  'data_location', 'node',
                  'skip_auto_ingest','observing_mode',
                  'quality','metadata','progress')