diff --git a/SAS/TMSS/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/src/tmss/tmssapp/models/specification.py index e340f10ecec6ea2cefdd5483af7f0483309f96b1..62637ef366e31597b47d230a16c5549304c6a0b0 100644 --- a/SAS/TMSS/src/tmss/tmssapp/models/specification.py +++ b/SAS/TMSS/src/tmss/tmssapp/models/specification.py @@ -8,13 +8,9 @@ from django.contrib.postgres.indexes import GinIndex from enum import Enum from django.db.models.expressions import RawSQL from django.db.models.deletion import ProtectedError -from lofar.common.json_utils import validate_json_against_schema +from lofar.common.json_utils import validate_json_against_schema, validate_json_against_its_schema from django.core.exceptions import ValidationError -from django.urls import reverse as reverse_path -from rest_framework import status import datetime -import json -from lofar.common import json_utils # # Common @@ -220,6 +216,24 @@ class Template(NamedCommon): # TODO: remove all <class>_unique_name_version UniqueConstraint's from the subclasses and replace by this line below when we start using django 3.0 # constraints = [UniqueConstraint(fields=['name', 'version'], name='%(class)s_unique_name_version')] + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + # if not self.schema.get('$id', '').startswith('http'): + # raise ValidationError("No valid $id to http URL given") + + if 'title' not in self.schema: + self.schema['title'] = self.name + + if 'description' not in self.schema: + self.schema['description'] = self.description + + if 'version' not in self.schema: + self.schema['version'] = self.version + + if '$schema' in self.schema: + validate_json_against_its_schema(self.schema) + + super().save(force_insert, force_update, using, update_fields) + # concrete models