diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/populate.py b/SAS/TMSS/backend/src/tmss/tmssapp/populate.py index 4a6d83b83492f1e8212489cb98eb85b59762f188..bc42975e45139f6387f7e20e3bbcd9661447f564 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/populate.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/populate.py @@ -499,46 +499,47 @@ def populate_connectors(): logger.info("Populating TaskConnectorType's") from django.db.utils import IntegrityError - def create_task_connector_skip_duplicate(**kwargs): + def create_task_connector_skip_duplicate(task_template_name:str, **kwargs): # wrapper func to silently skip duplicates - try: - TaskConnectorType.objects.create(**kwargs) - except IntegrityError: - # skipping duplicate - pass + for task_template in TaskTemplate.objects.filter(name=task_template_name).all(): + try: + TaskConnectorType.objects.create(task_template=task_template, **kwargs) + except IntegrityError: + # skipping duplicate + pass # calibrator, target and combined imaging observations for task_template_name in ['calibrator observation', 'target observation', 'parallel calibrator target observation']: create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.CORRELATOR.value), datatype=Datatype.objects.get(value=Datatype.Choices.VISIBILITIES.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.MEASUREMENTSET.value), - task_template=TaskTemplate.objects.get(name=task_template_name), + task_template_name=task_template_name, iotype=IOType.objects.get(value=IOType.Choices.OUTPUT.value)) # beamforming observation create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.BEAMFORMER.value), datatype=Datatype.objects.get(value=Datatype.Choices.TIME_SERIES.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.BEAMFORMED.value), - task_template=TaskTemplate.objects.get(name='beamforming observation'), + task_template_name='beamforming observation', iotype=IOType.objects.get(value=IOType.Choices.OUTPUT.value)) # pulsar pipeline create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.BEAMFORMER.value), datatype=Datatype.objects.get(value=Datatype.Choices.TIME_SERIES.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.BEAMFORMED.value), - task_template=TaskTemplate.objects.get(name='pulsar pipeline'), + task_template_name='pulsar pipeline', iotype=IOType.objects.get(value=IOType.Choices.INPUT.value)) create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.ANY.value), datatype=Datatype.objects.get(value=Datatype.Choices.QUALITY.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.PULP_SUMMARY.value), - task_template=TaskTemplate.objects.get(name='pulsar pipeline'), + task_template_name='pulsar pipeline', iotype=IOType.objects.get(value=IOType.Choices.OUTPUT.value)) create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.ANY.value), datatype=Datatype.objects.get(value=Datatype.Choices.PULSAR_PROFILE.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.PULP_ANALYSIS.value), - task_template=TaskTemplate.objects.get(name='pulsar pipeline'), + task_template_name='pulsar pipeline', iotype=IOType.objects.get(value=IOType.Choices.OUTPUT.value)) # preprocessing pipeline @@ -546,7 +547,7 @@ def populate_connectors(): create_task_connector_skip_duplicate(role=Role.objects.get(value=Role.Choices.ANY.value), datatype=Datatype.objects.get(value=Datatype.Choices.VISIBILITIES.value), dataformat=Dataformat.objects.get(value=Dataformat.Choices.MEASUREMENTSET.value), - task_template=TaskTemplate.objects.get(name='preprocessing pipeline'), + task_template_name='preprocessing pipeline', iotype=IOType.objects.get(value=iotype_value)) # Ingest and Cleanup can/should accept all kinds of data. @@ -554,8 +555,6 @@ def populate_connectors(): # This would result however in "unrealistic"/non-existing types like: TIME_SERIES-MEASUREMENTSET, or VISIBILITIES-BEAMFORMED, etc, which do not make any sense. # So, instead, lets loop over all exising output connectors, and accept those as input. for task_template_name in ('ingest', 'cleanup'): - task_template = TaskTemplate.objects.get(name=task_template_name) - # loop over all existing output types any_role = Role.objects.get(value=Role.Choices.ANY.value) for output_connector_type in TaskConnectorType.objects.filter(iotype=IOType.objects.get(value=IOType.Choices.OUTPUT.value)).all(): @@ -564,7 +563,7 @@ def populate_connectors(): create_task_connector_skip_duplicate(role=role, datatype=output_connector_type.datatype, dataformat=output_connector_type.dataformat, - task_template=task_template, + task_template_name=task_template_name, iotype=IOType.objects.get(value=IOType.Choices.INPUT.value))