diff --git a/SAS/TMSS/src/tmss/tmssapp/migrations/0002_populate.py b/SAS/TMSS/src/tmss/tmssapp/migrations/0002_populate.py index a4fcecd5e9c23454c0158ee93ae88e3d3ecb3321..5f71d8b3e7997447b18548b528557232bc454362 100644 --- a/SAS/TMSS/src/tmss/tmssapp/migrations/0002_populate.py +++ b/SAS/TMSS/src/tmss/tmssapp/migrations/0002_populate.py @@ -17,6 +17,9 @@ class Migration(migrations.Migration): # Start SubTask id with 2 000 000 to avoid overlap with 'old' (test/production) OTDB operations = [ migrations.RunSQL('ALTER SEQUENCE tmssapp_SubTask_id_seq RESTART WITH 2000000;'), migrations.RunPython(populate_choices), + migrations.RunPython(populate_settings), migrations.RunPython(populate_misc), migrations.RunPython(populate_lofar_json_schemas), - migrations.RunPython(populate_settings)] + migrations.RunPython(populate_cycles), + migrations.RunPython(populate_projects), + migrations.RunPython(populate_test_scheduling_set) ] diff --git a/SAS/TMSS/src/tmss/tmssapp/populate.py b/SAS/TMSS/src/tmss/tmssapp/populate.py index 6c15cc62c093a7ed9bdda5bef784635b72dc5bbd..7e47f734240cd2f5c77b3bbc13005bdd5b386679 100644 --- a/SAS/TMSS/src/tmss/tmssapp/populate.py +++ b/SAS/TMSS/src/tmss/tmssapp/populate.py @@ -19,7 +19,8 @@ logger = logging.getLogger(__name__) import json import os -from lofar.sas.tmss.tmss.tmssapp.subtasks import * +from datetime import datetime, timezone +from lofar.sas.tmss.tmss.tmssapp import models from lofar.sas.tmss.tmss.tmssapp.models.specification import * from lofar.sas.tmss.tmss.tmssapp.models.scheduling import * from lofar.common.json_utils import * @@ -60,100 +61,44 @@ def populate_lofar_json_schemas(apps, schema_editor): _populate_qa_files_subtask_template() _populate_qa_plots_subtask_template() - #_populate_task_draft_example() # Should be removed - _populate_test_scheduling_set() - -def _populate_test_scheduling_set(): +def populate_test_scheduling_set(apps, schema_editor): """ Create a Test Schedule Set to be able to refer to when Scheduling Unit Draft is created from a scheduling unit json :return: """ try: - from lofar.sas.tmss.tmss.tmssapp import models from lofar.sas.tmss.test.tmss_test_data_django_models import SchedulingSet_test_data if isTestEnvironment() or isDevelopmentEnvironment(): - scheduling_set_data = SchedulingSet_test_data(name="Test Scheduling Set UC1") - models.SchedulingSet.objects.create(**scheduling_set_data) + tmss_project = models.Project.objects.get(name="TMSS-Commissioning") + scheduling_set_data = SchedulingSet_test_data(name="Test Scheduling Set UC1", project=tmss_project) + models.SchedulingSet.objects.create(**scheduling_set_data) except ImportError: pass -def _populate_task_draft_example(): - """ - Create a Task Draft 'Target Observation' - :return: - """ - try: - from datetime import datetime, timezone - from lofar.sas.tmss.tmss.tmssapp import models - from lofar.sas.tmss.test.tmss_test_data_django_models import TaskDraft_test_data - - if isTestEnvironment() or isDevelopmentEnvironment(): - for nr in range(0, 18): - models.Cycle.objects.create(name="Cycle %s" % nr, - description="Lofar Cycle %s" % nr, - start=datetime(2013+nr//2, 6 if nr%2==0 else 11, 1, 0, 0, 0, 0, tzinfo=timezone.utc), - stop=datetime(2013+(nr+1)//2, 6 if nr%2==1 else 11, 1, 0, 0, 0, 0, tzinfo=timezone.utc), - number=nr, - standard_hours=0, # TODO: fill in cycle hours - expert_hours=0, - filler_hours=0) - - tmss_project = models.Project.objects.create(name="TMSS-Commissioning", - description="Project for all TMSS tests and commissioning", - priority_rank=1.0, - can_trigger=False, - private_data=True, - expert=True, - filler=False) - tmss_project.cycles.set([models.Cycle.objects.get(number=14)]) - - scheduling_set = models.SchedulingSet.objects.create(name="UC1 test set", - description="UC1 test set", - project=tmss_project) - - requirements_template = models.SchedulingUnitTemplate.objects.create(name="UC1 test scheduling unit template", - description="UC1 test scheduling unit template", - version="0.1", - schema={}) - - scheduling_unit_draft = models.SchedulingUnitDraft.objects.create(name="UC1 test scheduling unit", - description="UC1 test scheduling unit", - scheduling_set=scheduling_set, - requirements_template=requirements_template, - requirements_doc=get_default_json_object_for_schema(requirements_template.schema)) - - obs_task_template = models.TaskTemplate.objects.get(name='correlator schema') - task_draft_data = TaskDraft_test_data(name="Test Target Observation", specifications_template=obs_task_template, scheduling_unit_draft=scheduling_unit_draft) - obs_task_draft = models.TaskDraft.objects.create(**task_draft_data) - - pipeline_task_template = models.TaskTemplate.objects.get(name='preprocessing schema') - task_draft_data = TaskDraft_test_data(name="Test PreProcessingPipeline Task", - specifications_template=pipeline_task_template, - scheduling_unit_draft=obs_task_draft.scheduling_unit_draft) - pipeline_task_draft = models.TaskDraft.objects.create(**task_draft_data) - - # connect them - connector_type = models.TaskConnectorType.objects.first() # TODO: get the correct connectortype instead of the first - selection_template = models.TaskRelationSelectionTemplate.objects.get(name="SAP") - selection_doc = get_default_json_object_for_schema(selection_template.schema) - selection_doc['sap'] = [0] - - task_relation_data = {"tags": [], - "dataformat": models.Dataformat.objects.get(value='MeasurementSet'), - "producer": obs_task_draft, - "consumer": pipeline_task_draft, - "input_role": connector_type, - "output_role": connector_type, - "selection_doc": selection_doc, - "selection_template": selection_template } - models.TaskRelationDraft.objects.create(**task_relation_data) - - except ImportError: - pass +def populate_cycles(apps, schema_editor): + for nr in range(0, 18): + models.Cycle.objects.create(name="Cycle %s" % nr, + description="Lofar Cycle %s" % nr, + start=datetime(2013+nr//2, 6 if nr%2==0 else 11, 1, 0, 0, 0, 0, tzinfo=timezone.utc), + stop=datetime(2013+(nr+1)//2, 6 if nr%2==1 else 11, 1, 0, 0, 0, 0, tzinfo=timezone.utc), + number=nr, + standard_hours=0, # TODO: fill in cycle hours + expert_hours=0, + filler_hours=0) + +def populate_projects(apps, schema_editor): + tmss_project = models.Project.objects.create(name="TMSS-Commissioning", + description="Project for all TMSS tests and commissioning", + priority_rank=1.0, + can_trigger=False, + private_data=True, + expert=True, + filler=False) + tmss_project.cycles.set([models.Cycle.objects.get(number=14)]) def populate_resources(apps, schema_editor):