diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py index ebb0af2bdda4b4ae87b55a13c98ab8b54e071262..b3c9176da36dd24ff227eb38d4a3424b7ee4b7b5 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