From 3a4a6e995c155baf3f36d9d2cda94f6047e5fb9b Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 16 Jan 2024 16:00:15 +0100
Subject: [PATCH] TMSS-2886: added SchedulingUnitBlueprintPublicSerializer

---
 .../tmss/tmssapp/serializers/specification.py | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py
index cec4fd45dff..f24068cd0ce 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)
-- 
GitLab