From 5775b99e2f1152f2600b245421127a26a0076860 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?=
 <jkuensem@physik.uni-bielefeld.de>
Date: Tue, 24 Oct 2023 11:13:03 +0200
Subject: [PATCH] TMSS-2328: validate active SU blueprint specs only against
 schema

---
 .../backend/src/tmss/tmssapp/models/specification.py  | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
index ebb0af2bdda..b3c9176da36 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
@@ -1481,7 +1481,16 @@ class SchedulingUnitBlueprint(ProjectPropertyMixin, TemplateSchemaMixin, Schedul
             specifications_doc['parameters'] = self.draft.observation_strategy_template.template.get('parameters', [])
 
         # ensure that the generated specifications_doc is valid according to the schema (raises if not valid)
-        self.specifications_template.validate_document(specifications_doc)
+        try:
+            if self.status.value in SchedulingUnitStatus.PRE_ACTIVE_STATUS_VALUES:
+                self.specifications_template.validate_document(specifications_doc, raise_on_obsolete=False)
+            else:
+                # we only validate against the schema for active units (skip rule-based validation) because rules can
+                # change and old specs should still be readable.
+                self.specifications_template.validate_document_against_schema(specifications_doc)
+        except ValidationException as ve:
+            # wrap validation exception, and add object info
+            raise ValidationException("%s\nfor SchedulingUnitBlueprint id=%s name=%s" % (str(ve), self.id, self.name))
 
         return specifications_doc
 
-- 
GitLab