diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py index cec4fd45dff78a464c315c5d5715c4d5fa9b4c00..f24068cd0ce5bb6d6e6b6f08d435458e72d3c043 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py @@ -335,6 +335,30 @@ class SchedulingUnitBlueprintSlimSerializer(serializers.ModelSerializer): raise NotImplementedError("This serializer should only be used for fast querying existing scheduling units") +class SchedulingUnitBlueprintPublicSerializer(serializers.ModelSerializer): + '''A read-only serializer exposing public non-sensitive properties.''' + project = serializers.StringRelatedField(source='draft.scheduling_set.project.name', label='project', read_only=True) + on_sky_duration = FloatDurationField(read_only=True) + target_pointings_astropy = serializers.StringRelatedField(label='targets', read_only=True) + + class Meta: + model = models.SchedulingUnitBlueprint + read_only_fields = ['id', + 'status', + 'on_sky_start_time', + 'on_sky_stop_time', + 'on_sky_duration', + 'target_pointings_astropy', + 'project'] + fields = read_only_fields + + def create(self, validated_data): + raise NotImplementedError("This is a read-only serializer") + + def update(self, instance, validated_data): + raise NotImplementedError("This is a read-only serializer") + + class TaskBlueprintSlimSerializer(serializers.ModelSerializer): '''A small 'slim' serializer for the most relevant properties.''' duration = FloatDurationField(read_only=True)