From 6150f1f54fc6613cc1781cbc7ccea9b0f374b4da Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Thu, 23 Sep 2021 15:02:02 +0200 Subject: [PATCH] TMSS-1044: removed Default*Templates --- .../scheduling/test/t_dynamic_scheduling.py | 2 - .../tmss/tmssapp/migrations/0001_initial.py | 178 +----------------- .../tmss/tmssapp/migrations/0002_populate.py | 4 +- .../src/tmss/tmssapp/models/scheduling.py | 10 - .../src/tmss/tmssapp/models/specification.py | 30 --- SAS/TMSS/backend/src/tmss/tmssapp/populate.py | 8 - .../tmss/tmssapp/serializers/scheduling.py | 13 -- .../tmss/tmssapp/serializers/specification.py | 36 ---- SAS/TMSS/backend/src/tmss/tmssapp/tasks.py | 12 +- .../src/tmss/tmssapp/viewsets/scheduling.py | 10 - .../tmss/tmssapp/viewsets/specification.py | 30 --- SAS/TMSS/backend/src/tmss/urls.py | 8 - .../test/t_tmssapp_scheduling_REST_API.py | 44 ----- .../test/t_tmssapp_specification_REST_API.py | 174 ----------------- .../t_tmssapp_specification_django_API.py | 13 -- .../test/tmss_test_data_django_models.py | 4 - SAS/TMSS/backend/test/tmss_test_data_rest.py | 13 -- 17 files changed, 11 insertions(+), 578 deletions(-) diff --git a/SAS/TMSS/backend/services/scheduling/test/t_dynamic_scheduling.py b/SAS/TMSS/backend/services/scheduling/test/t_dynamic_scheduling.py index a39ac5d7985..54c33e51729 100755 --- a/SAS/TMSS/backend/services/scheduling/test/t_dynamic_scheduling.py +++ b/SAS/TMSS/backend/services/scheduling/test/t_dynamic_scheduling.py @@ -97,12 +97,10 @@ class TestDynamicScheduling(TestCase): # Note: we use django.test.TestCase inst if strategy_template.template['scheduling_constraints_doc']['sky']['transit_offset']['to'] <= 7200: strategy_template.template['scheduling_constraints_doc']['sky']['transit_offset']['to'] = 28800 strategy_template.save() - models.DefaultSchedulingConstraintsTemplate.objects.all().delete() for constraints_template in models.SchedulingConstraintsTemplate.objects.all(): constraints_template.schema['properties']['sky']['properties']['transit_offset']['properties']['from']['default'] = -28800 constraints_template.schema['properties']['sky']['properties']['transit_offset']['properties']['to']['default'] = 28800 constraints_template.save() - models.DefaultSchedulingConstraintsTemplate.objects.create(name="foo", template=models.SchedulingConstraintsTemplate.objects.get(name="constraints")) def setUp(self) -> None: # wipe all radb entries (via cascading deletes) in between tests, so the tests don't influence each other diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py index cf9bbe10108..8ac8720ca20 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.9 on 2021-09-17 14:38 +# Generated by Django 3.0.9 on 2021-09-23 12:29 from django.conf import settings import django.contrib.auth.models @@ -228,110 +228,6 @@ class Migration(migrations.Migration): 'abstract': False, }, ), - migrations.CreateModel( - name='DefaultDataproductSpecificationsTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultGeneratorTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultReservationTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultSchedulingConstraintsTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultSchedulingUnitTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultSubtaskTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultTaskRelationSelectionTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='DefaultTaskTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), blank=True, default=list, help_text='User-defined search keywords for object.', size=8)), - ('created_at', models.DateTimeField(auto_now_add=True, help_text='Moment of object creation.')), - ('updated_at', models.DateTimeField(auto_now=True, help_text='Moment of last object update.')), - ('name', models.CharField(max_length=128, unique=True)), - ], - options={ - 'abstract': False, - }, - ), migrations.CreateModel( name='Filesystem', fields=[ @@ -1404,46 +1300,6 @@ class Migration(migrations.Migration): name='cluster', field=models.ForeignKey(help_text='Cluster hosting this filesystem.', on_delete=django.db.models.deletion.PROTECT, to='tmssapp.Cluster'), ), - migrations.AddField( - model_name='defaulttasktemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.TaskTemplate'), - ), - migrations.AddField( - model_name='defaulttaskrelationselectiontemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.TaskRelationSelectionTemplate'), - ), - migrations.AddField( - model_name='defaultsubtasktemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.SubtaskTemplate'), - ), - migrations.AddField( - model_name='defaultschedulingunittemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.SchedulingUnitTemplate'), - ), - migrations.AddField( - model_name='defaultschedulingconstraintstemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.SchedulingConstraintsTemplate'), - ), - migrations.AddField( - model_name='defaultreservationtemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.ReservationTemplate'), - ), - migrations.AddField( - model_name='defaultgeneratortemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.GeneratorTemplate'), - ), - migrations.AddField( - model_name='defaultdataproductspecificationstemplate', - name='template', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tmssapp.DataproductSpecificationsTemplate'), - ), migrations.AddField( model_name='dataproducttransform', name='input', @@ -1621,38 +1477,6 @@ class Migration(migrations.Migration): model_name='sap', index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_sap_tags_7451b0_gin'), ), - migrations.AddIndex( - model_name='defaulttasktemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_c88200_gin'), - ), - migrations.AddIndex( - model_name='defaulttaskrelationselectiontemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_3bee7d_gin'), - ), - migrations.AddIndex( - model_name='defaultsubtasktemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_e9c73d_gin'), - ), - migrations.AddIndex( - model_name='defaultschedulingunittemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_3ab2d6_gin'), - ), - migrations.AddIndex( - model_name='defaultschedulingconstraintstemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_480bbd_gin'), - ), - migrations.AddIndex( - model_name='defaultreservationtemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_58d7a4_gin'), - ), - migrations.AddIndex( - model_name='defaultgeneratortemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_89c89d_gin'), - ), - migrations.AddIndex( - model_name='defaultdataproductspecificationstemplate', - index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_def_tags_269b1f_gin'), - ), migrations.AddIndex( model_name='dataproducttransform', index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='tmssapp_dat_tags_380c1f_gin'), diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0002_populate.py b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0002_populate.py index 344b849cfbd..8c9cb85cebe 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0002_populate.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0002_populate.py @@ -50,7 +50,9 @@ class Migration(migrations.Migration): RETURNS trigger AS $BODY$ BEGIN - IF OLD.specifications_template_id <> NEW.specifications_template_id THEN + IF OLD.specifications_template_id <> NEW.specifications_template_id OR + OLD.name <> NEW.name OR + OLD.description <> NEW.description THEN RAISE EXCEPTION 'ILLEGAL UPDATE OF IMMUTABLE BLUEPRINT FIELD'; END IF; RETURN NEW; diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py index 5ad73a12bce..8cb27be05b2 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py @@ -98,20 +98,10 @@ class SubtaskTemplate(Template): realtime = BooleanField(default=False) -class DefaultSubtaskTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey('SubtaskTemplate', on_delete=PROTECT) - - class DataproductSpecificationsTemplate(Template): pass -class DefaultDataproductSpecificationsTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey('DataproductSpecificationsTemplate', on_delete=PROTECT) - - class DataproductFeedbackTemplate(Template): pass diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py index 01f2d5ac2ee..2a0d66f1203 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py @@ -197,11 +197,6 @@ class GeneratorTemplate(Template): create_function = CharField(max_length=128, help_text='Python function to call to execute the generator.') -class DefaultGeneratorTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("GeneratorTemplate", on_delete=PROTECT) - - class SchedulingUnitObservingStrategyTemplate(NamedVersionedCommon): ''' A SchedulingUnitObservingStrategyTemplate is a template in the sense that it serves as a template to fill in json data objects conform its referred scheduling_unit_template. @@ -261,39 +256,19 @@ class SchedulingUnitTemplate(Template): pass -class DefaultSchedulingUnitTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("SchedulingUnitTemplate", on_delete=PROTECT) - - class SchedulingConstraintsTemplate(Template): pass -class DefaultSchedulingConstraintsTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("SchedulingConstraintsTemplate", on_delete=PROTECT) - - class TaskTemplate(Template): validation_code_js = CharField(max_length=128, blank=True, default="", help_text='JavaScript code for additional (complex) validation.') type = ForeignKey('TaskType', null=False, on_delete=PROTECT) -class DefaultTaskTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("TaskTemplate", on_delete=PROTECT) - - class TaskRelationSelectionTemplate(Template): pass -class DefaultTaskRelationSelectionTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("TaskRelationSelectionTemplate", on_delete=PROTECT) - - class ReservationStrategyTemplate(NamedCommon): ''' A ReservationStrategyTemplate is a template in the sense that it serves as a template to fill in json data objects @@ -319,11 +294,6 @@ class ReservationTemplate(Template): pass -class DefaultReservationTemplate(BasicCommon): - name = CharField(max_length=128, unique=True) - template = ForeignKey("ReservationTemplate", on_delete=PROTECT) - - # # Instance Objects # diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/populate.py b/SAS/TMSS/backend/src/tmss/tmssapp/populate.py index 64055b318ef..429916633fe 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/populate.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/populate.py @@ -45,14 +45,6 @@ permission_groups = {'system_setting': [viewsets.AntennaSetViewSet, viewsets.DataproductFeedbackTemplateViewSet, viewsets.DataproductSpecificationsTemplateViewSet, viewsets.DatatypeViewSet, - viewsets.DefaultDataproductSpecificationsTemplateViewSet, - viewsets.DefaultGeneratorTemplateViewSet, - viewsets.DefaultReservationTemplateViewSet, - viewsets.DefaultSchedulingConstraintsTemplateViewSet, - viewsets.DefaultSchedulingUnitTemplateViewSet, - viewsets.DefaultSubtaskTemplateViewSet, - viewsets.DefaultTaskRelationSelectionTemplateViewSet, - viewsets.DefaultTaskTemplateViewSet, viewsets.FilesystemViewSet, viewsets.GeneratorTemplateViewSet, viewsets.HashAlgorithmViewSet, diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/scheduling.py b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/scheduling.py index 04a943b9313..97c57520c4a 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/scheduling.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/scheduling.py @@ -52,25 +52,12 @@ class SubtaskTemplateSerializer(AbstractTemplateSerializer): fields = '__all__' -class DefaultSubtaskTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultSubtaskTemplate - fields = '__all__' - - class DataproductSpecificationsTemplateSerializer(AbstractTemplateSerializer): class Meta: model = models.DataproductSpecificationsTemplate fields = '__all__' -class DefaultDataproductSpecificationsTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultDataproductSpecificationsTemplate - fields = '__all__' - - - class DataproductFeedbackTemplateSerializer(AbstractTemplateSerializer): class Meta: model = models.DataproductFeedbackTemplate diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py index dc246cd3d88..abea9369e0e 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/serializers/specification.py @@ -35,12 +35,6 @@ class GeneratorTemplateSerializer(AbstractTemplateSerializer): fields = '__all__' -class DefaultGeneratorTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultGeneratorTemplate - fields = '__all__' - - class SchedulingUnitObservingStrategyTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): template = JSONEditorField(schema_source="scheduling_unit_template.schema") @@ -55,48 +49,24 @@ class SchedulingUnitTemplateSerializer(AbstractTemplateSerializer): fields = '__all__' -class DefaultSchedulingUnitTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultSchedulingUnitTemplate - fields = '__all__' - - class SchedulingConstraintsTemplateSerializer(AbstractTemplateSerializer): class Meta: model = models.SchedulingConstraintsTemplate fields = '__all__' -class DefaultSchedulingConstraintsTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultSchedulingConstraintsTemplate - fields = '__all__' - - class TaskTemplateSerializer(AbstractTemplateSerializer): class Meta: model = models.TaskTemplate fields = '__all__' -class DefaultTaskTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultTaskTemplate - fields = '__all__' - - class TaskRelationSelectionTemplateSerializer(AbstractTemplateSerializer): class Meta: model = models.TaskRelationSelectionTemplate fields = '__all__' -class DefaultTaskRelationSelectionTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultTaskRelationSelectionTemplate - fields = '__all__' - - class RoleSerializer(serializers.ModelSerializer): class Meta: model = models.Role @@ -374,12 +344,6 @@ class ReservationTemplateSerializer(AbstractTemplateSerializer): fields = '__all__' -class DefaultReservationTemplateSerializer(DynamicRelationalHyperlinkedModelSerializer): - class Meta: - model = models.DefaultReservationTemplate - fields = '__all__' - - class ReservationSerializer(DynamicRelationalHyperlinkedModelSerializer): specifications_doc = JSONEditorField(schema_source='specifications_template.schema') diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py b/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py index 01c1f4bffbf..18d46ee5bad 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py @@ -39,11 +39,13 @@ def create_scheduling_unit_draft_from_observing_strategy_template(strategy_templ scheduling_constraints_template = models.SchedulingConstraintsTemplate.objects.get(name=scheduling_constraints_template_name) else: # get the default_scheduling_constraints_template - default_scheduling_constraints_template = models.DefaultSchedulingConstraintsTemplate.objects.all().order_by('created_at').last() - if default_scheduling_constraints_template: - scheduling_constraints_template = default_scheduling_constraints_template.template - else: - scheduling_constraints_template = None + scheduling_constraints_template = None # TODO: TMSS-1044 get "default" SchedulingConstraintsTemplate from common schemas + + # default_scheduling_constraints_template = models.DefaultSchedulingConstraintsTemplate.objects.all().order_by('created_at').last() + # if default_scheduling_constraints_template: + # scheduling_constraints_template = default_scheduling_constraints_template.template + # else: + # scheduling_constraints_template = None # extract the scheduling_constraints_doc from the template_doc, # so we can feed in seperately into the SchedulingUnitDraft. diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/scheduling.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/scheduling.py index 25b4d7b9aa5..58f3cb046a7 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/scheduling.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/scheduling.py @@ -111,21 +111,11 @@ class SubtaskTemplateViewSet(AbstractTemplateViewSet): return queryset -class DefaultSubtaskTemplateViewSet(LOFARViewSet): - queryset = models.DefaultSubtaskTemplate.objects.all() - serializer_class = serializers.DefaultSubtaskTemplateSerializer - - class DataproductSpecificationsTemplateViewSet(AbstractTemplateViewSet): queryset = models.DataproductSpecificationsTemplate.objects.all() serializer_class = serializers.DataproductSpecificationsTemplateSerializer -class DefaultDataproductSpecificationsTemplateViewSet(LOFARViewSet): - queryset = models.DefaultDataproductSpecificationsTemplate.objects.all() - serializer_class = serializers.DefaultDataproductSpecificationsTemplateSerializer - - class DataproductFeedbackTemplateViewSet(AbstractTemplateViewSet): queryset = models.DataproductFeedbackTemplate.objects.all() serializer_class = serializers.DataproductFeedbackTemplateSerializer diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py index af60f91746a..080a40b76c6 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py @@ -73,11 +73,6 @@ class GeneratorTemplateViewSet(AbstractTemplateViewSet): serializer_class = serializers.GeneratorTemplateSerializer -class DefaultGeneratorTemplateViewSet(LOFARViewSet): - queryset = models.DefaultGeneratorTemplate.objects.all() - serializer_class = serializers.DefaultGeneratorTemplateSerializer - - class SchedulingUnitObservingStrategyTemplateViewSet(LOFARViewSet): queryset = models.SchedulingUnitObservingStrategyTemplate.objects.all() serializer_class = serializers.SchedulingUnitObservingStrategyTemplateSerializer @@ -179,11 +174,6 @@ class SchedulingUnitTemplateViewSet(AbstractTemplateViewSet): filter_class = SchedulingUnitTemplateFilter -class DefaultSchedulingUnitTemplateViewSet(LOFARViewSet): - queryset = models.DefaultSchedulingUnitTemplate.objects.all() - serializer_class = serializers.DefaultSchedulingUnitTemplateSerializer - - class SchedulingConstraintsTemplateFilter(filters.FilterSet): class Meta: model = models.SchedulingConstraintsTemplate @@ -199,11 +189,6 @@ class SchedulingConstraintsTemplateViewSet(AbstractTemplateViewSet): filter_class = SchedulingConstraintsTemplateFilter -class DefaultSchedulingConstraintsTemplateViewSet(LOFARViewSet): - queryset = models.DefaultSchedulingConstraintsTemplate.objects.all() - serializer_class = serializers.DefaultSchedulingConstraintsTemplateSerializer - - class TaskTemplateFilter(filters.FilterSet): class Meta: model = models.TaskTemplate @@ -219,21 +204,11 @@ class TaskTemplateViewSet(AbstractTemplateViewSet): filter_class = TaskTemplateFilter -class DefaultTaskTemplateViewSet(LOFARViewSet): - queryset = models.DefaultTaskTemplate.objects.all() - serializer_class = serializers.DefaultTaskTemplateSerializer - - class TaskRelationSelectionTemplateViewSet(AbstractTemplateViewSet): queryset = models.TaskRelationSelectionTemplate.objects.all() serializer_class = serializers.TaskRelationSelectionTemplateSerializer -class DefaultTaskRelationSelectionTemplateViewSet(LOFARViewSet): - queryset = models.DefaultTaskRelationSelectionTemplate.objects.all() - serializer_class = serializers.DefaultTaskRelationSelectionTemplateSerializer - - class ReservationStrategyTemplateViewSet(LOFARViewSet): queryset = models.ReservationStrategyTemplate.objects.all() serializer_class = serializers.ReservationStrategyTemplateSerializer @@ -294,11 +269,6 @@ class ReservationStrategyTemplateViewSet(LOFARViewSet): headers={'Location': reservation_path}) -class DefaultReservationTemplateViewSet(LOFARViewSet): - queryset = models.DefaultReservationTemplate.objects.all() - serializer_class = serializers.DefaultReservationTemplateSerializer - - class ReservationTemplateViewSet(AbstractTemplateViewSet): queryset = models.ReservationTemplate.objects.all() serializer_class = serializers.ReservationTemplateSerializer diff --git a/SAS/TMSS/backend/src/tmss/urls.py b/SAS/TMSS/backend/src/tmss/urls.py index 0b1b1db79d5..0fce7421447 100644 --- a/SAS/TMSS/backend/src/tmss/urls.py +++ b/SAS/TMSS/backend/src/tmss/urls.py @@ -144,12 +144,6 @@ router.register(r'task_template', viewsets.TaskTemplateViewSet) router.register(r'task_relation_selection_template', viewsets.TaskRelationSelectionTemplateViewSet) router.register(r'reservation_template', viewsets.ReservationTemplateViewSet) router.register(r'task_connector_type', viewsets.TaskConnectorTypeViewSet) -router.register(r'default_generator_template', viewsets.DefaultGeneratorTemplateViewSet) -router.register(r'default_scheduling_unit_template', viewsets.DefaultSchedulingUnitTemplateViewSet) -router.register(r'default_scheduling_constraints_template', viewsets.DefaultSchedulingConstraintsTemplateViewSet) -router.register(r'default_task_template', viewsets.DefaultTaskTemplateViewSet) -router.register(r'default_task_relation_selection_template', viewsets.DefaultTaskRelationSelectionTemplateViewSet) -router.register(r'default_reservation_template', viewsets.DefaultReservationTemplateViewSet) router.register(r'reservation_strategy_template', viewsets.ReservationStrategyTemplateViewSet) # instances @@ -198,8 +192,6 @@ router.register(r'scheduling_relation_placement', viewsets.SchedulingRelationPla # templates router.register(r'subtask_template', viewsets.SubtaskTemplateViewSet) router.register(r'dataproduct_specifications_template', viewsets.DataproductSpecificationsTemplateViewSet) -router.register(r'default_subtask_template', viewsets.DefaultSubtaskTemplateViewSet) -router.register(r'default_dataproduct_specifications_template', viewsets.DefaultDataproductSpecificationsTemplateViewSet) router.register(r'dataproduct_feedback_template', viewsets.DataproductFeedbackTemplateViewSet) router.register(r'sap_template', viewsets.SAPTemplateViewSet) diff --git a/SAS/TMSS/backend/test/t_tmssapp_scheduling_REST_API.py b/SAS/TMSS/backend/test/t_tmssapp_scheduling_REST_API.py index 719371acc17..2552cc1dc65 100755 --- a/SAS/TMSS/backend/test/t_tmssapp_scheduling_REST_API.py +++ b/SAS/TMSS/backend/test/t_tmssapp_scheduling_REST_API.py @@ -216,50 +216,6 @@ class DataproductSpecificationsTemplateTestCase(unittest.TestCase): DELETE_and_assert_gone(self, url) -class DefaultSubtaskTemplatesTestCase(unittest.TestCase): - def test_default_subtask_template_POST(self): - template_url = test_data_creator.post_data_and_get_url(test_data_creator.SubtaskTemplate(), '/subtask_template/') - dst_test_data = test_data_creator.DefaultSubtaskTemplates(template_url=template_url) - POST_and_assert_expected_response(self, BASE_URL + '/default_subtask_template/', dst_test_data, 201, dst_test_data) - - def test_default_dataproduct_specifications_template_POST(self): - template_url = test_data_creator.post_data_and_get_url(test_data_creator.DataproductSpecificationsTemplate(), '/dataproduct_specifications_template/') - dst_test_data = test_data_creator.DefaultSubtaskTemplates(template_url=template_url) - POST_and_assert_expected_response(self, BASE_URL + '/default_dataproduct_specifications_template/', dst_test_data, 201, dst_test_data) - - def test_default_subtask_template_PROTECT_behavior_on_template_deleted(self): - st_test_data = test_data_creator.SubtaskTemplate() - expected_data = test_data_creator.update_schema_from_template("subtasktemplate", st_test_data) - template_url = test_data_creator.post_data_and_get_url(st_test_data, '/subtask_template/') - dst_test_data = test_data_creator.DefaultSubtaskTemplates(template_url=template_url) - - # POST with dependency - POST_and_assert_expected_response(self, BASE_URL + '/default_subtask_template/', dst_test_data, 201, dst_test_data) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - def test_default_dataproduct_specifications_template_PROTECT_behavior_on_template_deleted(self): - dpst_test_data = test_data_creator.DataproductSpecificationsTemplate() - expected_data = test_data_creator.update_schema_from_template("dataproductspecificationstemplate", dpst_test_data) - template_url = test_data_creator.post_data_and_get_url(dpst_test_data, '/dataproduct_specifications_template/') - dst_test_data = test_data_creator.DefaultSubtaskTemplates(template_url=template_url) - - # POST with dependency - POST_and_assert_expected_response(self, BASE_URL + '/default_dataproduct_specifications_template/', dst_test_data, 201, dst_test_data) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - class SubtaskTestCase(unittest.TestCase): @classmethod def setUpClass(cls) -> None: diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py index 5d15dfef5e9..d9d56dbb2df 100755 --- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py +++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py @@ -714,180 +714,6 @@ class TaskConnectorTestCase(unittest.TestCase): GET_OK_and_assert_equal_expected_response(self, BASE_URL + '/task_connector_type/' + str(id2) + '/', test_data_2) -class DefaultTemplates(unittest.TestCase): - def test_default_generator_template_POST(self): - test_data = test_data_creator.GeneratorTemplate() - expected_data = test_data_creator.update_schema_from_template("generatortemplate", test_data) - r_dict = POST_and_assert_expected_response(self, BASE_URL + '/generator_template/', test_data, 201, expected_data) - url = r_dict['url'] - - test_data_1 = dict(test_data_creator.DefaultTemplates()) - test_data_1['template'] = url - expected_data_1 = test_data_creator.update_schema_from_template("generatortemplate", test_data_1) - POST_and_assert_expected_response(self, BASE_URL + '/default_generator_template/', test_data_1, 201, expected_data_1) - - def test_default_scheduling_unit_template_POST(self): - test_data = test_data_creator.SchedulingUnitTemplate() - expected_data = test_data_creator.update_schema_from_template("schedulingunittemplate", test_data) - r_dict = POST_and_assert_expected_response(self, BASE_URL + '/scheduling_unit_template/', - test_data, 201, - expected_data) - url = r_dict['url'] - - test_data_1 = dict(test_data_creator.DefaultTemplates()) - test_data_1['template'] = url - expected_data_1 = test_data_creator.update_schema_from_template("schedulingunittemplate", test_data_1) - POST_and_assert_expected_response(self, BASE_URL + '/default_scheduling_unit_template/', test_data_1, 201, expected_data_1) - - - def test_default_scheduling_constraints_template_POST(self): - test_data = test_data_creator.SchedulingConstraintsTemplate() - expected_data = test_data_creator.update_schema_from_template("schedulingconstraintstemplate", test_data) - r_dict = POST_and_assert_expected_response(self, BASE_URL + '/scheduling_constraints_template/', - test_data, 201, - expected_data) - url = r_dict['url'] - - test_data_1 = dict(test_data_creator.DefaultTemplates()) - test_data_1['template'] = url - expected_data_1 = test_data_creator.update_schema_from_template("schedulingconstraintstemplate", test_data_1) - POST_and_assert_expected_response(self, BASE_URL + '/default_scheduling_constraints_template/', test_data_1, 201, expected_data_1) - - - def test_default_task_template_POST(self): - test_data = test_data_creator.TaskTemplate() - expected_data = test_data_creator.update_schema_from_template("tasktemplate", test_data) - r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_template/', - test_data, 201, - expected_data) - url = r_dict['url'] - - test_data_1 = dict(test_data_creator.DefaultTemplates()) - test_data_1['template'] = url - expected_data_1 = test_data_creator.update_schema_from_template("tasktemplate", test_data_1) - POST_and_assert_expected_response(self, BASE_URL + '/default_task_template/', test_data_1, 201, expected_data_1) - - def test_default_task_relation_selection_template_POST(self): - test_data = test_data_creator.TaskRelationSelectionTemplate() - expected_data = test_data_creator.update_schema_from_template("taskrelationselectiontemplate", test_data) - r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_selection_template/', - test_data, 201, - expected_data) - url = r_dict['url'] - - test_data_1 = dict(test_data_creator.DefaultTemplates()) - test_data_1['template'] = url - expected_data_1 = test_data_creator.update_schema_from_template("taskrelationselectiontemplate", test_data_1) - POST_and_assert_expected_response(self, BASE_URL + '/default_task_relation_selection_template/', test_data_1, 201, expected_data_1) - - def test_default_generator_template_PROTECT_behavior_on_template_deleted(self): - - # POST with dependency - test_data = test_data_creator.GeneratorTemplate() - expected_data = test_data_creator.update_schema_from_template("generatortemplate", test_data) - template_url = POST_and_assert_expected_response(self, BASE_URL + '/generator_template/', - test_data, 201, - expected_data)['url'] - test_data2 = dict(test_data_creator.DefaultTemplates("defaulttemplate2")) - test_data2['template'] = template_url - expected_data2 = test_data_creator.update_schema_from_template("defaultgeneratortemplate", test_data2) - POST_and_assert_expected_response(self, BASE_URL + '/default_generator_template/', - test_data2, 201, expected_data2) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - def test_default_scheduling_unit_template_PROTECT_behavior_on_template_deleted(self): - - # POST with dependency - test_data = test_data_creator.SchedulingUnitTemplate() - expected_data = test_data_creator.update_schema_from_template("schedulingunittemplate", test_data) - template_url = POST_and_assert_expected_response(self, BASE_URL + '/scheduling_unit_template/', - test_data, 201, - expected_data)['url'] - test_data2 = dict(test_data_creator.DefaultTemplates("defaulttemplate2")) - test_data2['template'] = template_url - expected_data2 = test_data_creator.update_schema_from_template("defaultschedulingunittemplate", test_data2) - POST_and_assert_expected_response(self, BASE_URL + '/default_scheduling_unit_template/', - test_data2, 201, expected_data2) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - - def test_default_scheduling_constraints_template_PROTECT_behavior_on_template_deleted(self): - - # POST with dependency - test_data = test_data_creator.SchedulingConstraintsTemplate() - expected_data = test_data_creator.update_schema_from_template("schedulingconstraintstemplate", test_data) - template_url = POST_and_assert_expected_response(self, BASE_URL + '/scheduling_constraints_template/', - test_data, 201, - expected_data)['url'] - test_data2 = dict(test_data_creator.DefaultTemplates("defaulttemplate2")) - test_data2['template'] = template_url - expected_data2 = test_data_creator.update_schema_from_template("defaultschedulingconstraintstemplate", test_data2) - POST_and_assert_expected_response(self, BASE_URL + '/default_scheduling_constraints_template/', - test_data2, 201, expected_data2) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - - def test_default_task_template_PROTECT_behavior_on_template_deleted(self): - - # POST with dependency - test_data = test_data_creator.TaskTemplate() - expected_data = test_data_creator.update_schema_from_template("tasktemplate", test_data) - template_url = POST_and_assert_expected_response(self, BASE_URL + '/task_template/', - test_data, 201, - expected_data)['url'] - test_data2 = dict(test_data_creator.DefaultTemplates("defaulttemplate2")) - test_data2['template'] = template_url - expected_data2 = test_data_creator.update_schema_from_template("defaulttasktemplate", test_data2) - POST_and_assert_expected_response(self, BASE_URL + '/default_task_template/', - test_data2, 201, expected_data2) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - def test_default_task_relation_selection_template_PROTECT_behavior_on_template_deleted(self): - - # POST with dependency - test_data = test_data_creator.TaskRelationSelectionTemplate() - expected_data = test_data_creator.update_schema_from_template("taskrelationselectiontemplate", test_data) - template_url = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_selection_template/', - test_data, 201, - expected_data)['url'] - test_data2 = dict(test_data_creator.DefaultTemplates("defaulttemplate2")) - test_data2['template'] = template_url - expected_data2 = test_data_creator.update_schema_from_template("defaulttaskrelationselectiontemplate", test_data2) - POST_and_assert_expected_response(self, BASE_URL + '/default_task_relation_selection_template/', - test_data2, 201, expected_data2) - - # Try to DELETE dependency, verify that was not successful - # Unfortunately we don't get a nice error in json, but a Django debug page on error 500... - response = requests.delete(template_url, auth=AUTH) - self.assertEqual(500, response.status_code) - self.assertTrue("ProtectedError" in str(response.content)) - GET_OK_and_assert_equal_expected_response(self, template_url, expected_data) - - class CycleTestCase(unittest.TestCase): def test_cycle_list_apiformat(self): r = requests.get(BASE_URL + '/cycle/?format=api', auth=AUTH) diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py index d46848d8f75..3e2cfa4c45f 100755 --- a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py +++ b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py @@ -71,19 +71,6 @@ class GeneratorTemplateTest(unittest.TestCase): self.assertGreater(after, entry.updated_at) -class DefaultGeneratorTemplateTest(unittest.TestCase): - def test_DefaultGeneratorTemplate_prevents_same_name(self): - common_forbidden_name = "my_name" - template = models.GeneratorTemplate.objects.create(**GeneratorTemplate_test_data()) - - test_data_1 = DefaultGeneratorTemplate_test_data(common_forbidden_name, template) - models.DefaultGeneratorTemplate.objects.create(**test_data_1) - - test_data_2 = DefaultGeneratorTemplate_test_data(common_forbidden_name, template) - with self.assertRaises(IntegrityError): - models.DefaultGeneratorTemplate.objects.create(**test_data_2) - - class SchedulingUnitTemplateTest(unittest.TestCase): def test_SchedulingUnitTemplate_gets_created_with_correct_creation_timestamp(self): diff --git a/SAS/TMSS/backend/test/tmss_test_data_django_models.py b/SAS/TMSS/backend/test/tmss_test_data_django_models.py index 0ed868e71a1..6f65c8da477 100644 --- a/SAS/TMSS/backend/test/tmss_test_data_django_models.py +++ b/SAS/TMSS/backend/test/tmss_test_data_django_models.py @@ -43,10 +43,6 @@ def GeneratorTemplate_test_data(name="my_GeneratorTemplate") -> dict: "create_function": 'Funky', "tags": ["TMSS", "TESTING"]} -def DefaultGeneratorTemplate_test_data(name=None, template=None) -> dict: - return {'name': name if name is not None else "DefaultGeneratorTemplate_"+str(uuid.uuid4()), - 'template': template, - 'tags':[]} def SchedulingUnitTemplate_test_data(name="my_SchedulingUnitTemplate", schema:dict=None) -> dict: if schema is None: diff --git a/SAS/TMSS/backend/test/tmss_test_data_rest.py b/SAS/TMSS/backend/test/tmss_test_data_rest.py index 918030b3877..59f1c18719f 100644 --- a/SAS/TMSS/backend/test/tmss_test_data_rest.py +++ b/SAS/TMSS/backend/test/tmss_test_data_rest.py @@ -232,11 +232,6 @@ class TMSSRESTTestDataCreator(): "iotype": self.django_api_url + '/iotype/%s'%iotype} - def DefaultTemplates(self, name="defaulttemplate"): - return {"name": name, - "template": None, - "tags": []} - def Cycle(self, description="my cycle description"): return {"name": 'my_cycle_' + str(uuid.uuid4()), "description": description, @@ -616,14 +611,6 @@ class TMSSRESTTestDataCreator(): "schema": minimal_json_schema(), "tags": ["TMSS", "TESTING"]} - def DefaultSubtaskTemplates(self, name=None, template_url=None): - if template_url is None: - template_url = self.cached_subtask_template_url - - return {"name": name if name else "default_template_%s" % uuid.uuid4(), - "template": template_url, - "tags": []} - def Cluster(self, name=None): return {"name": name if name else "Cluster %s" % uuid.uuid4(), "description": 'My one cluster', -- GitLab