diff --git a/gracedb/events/migrations/0038_pipeline_pipeline_type.py b/gracedb/events/migrations/0038_pipeline_pipeline_type.py new file mode 100644 index 0000000000000000000000000000000000000000..8e0d9f4190c72b6100b9f2d8b7fe38b319132acf --- /dev/null +++ b/gracedb/events/migrations/0038_pipeline_pipeline_type.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-07-10 19:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0037_delete_approval_model'), + ] + + operations = [ + migrations.AddField( + model_name='pipeline', + name='pipeline_type', + field=models.CharField(choices=[(b'E', b'external'), (b'O', b'other'), (b'SO', b'non-production search'), (b'SP', b'production search')], default='O', max_length=2), + preserve_default=False, + ), + ] diff --git a/gracedb/events/migrations/0039_specify_pipeline_types.py b/gracedb/events/migrations/0039_specify_pipeline_types.py new file mode 100644 index 0000000000000000000000000000000000000000..5ac894da44b56c68313c1b5bbc5b5de177dc83b3 --- /dev/null +++ b/gracedb/events/migrations/0039_specify_pipeline_types.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-07-10 19:34 +from __future__ import unicode_literals + +from django.db import migrations + +from events.models import Pipeline as pipeline_model + +PIPELINES = [ + ('CWB', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('MBTAOnline', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('gstlal', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('oLIB', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('pycbc', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('spiir', pipeline_model.PIPELINE_TYPE_SEARCH_PRODUCTION), + ('CWB2G', pipeline_model.PIPELINE_TYPE_SEARCH_OTHER), + ('Ringdown', pipeline_model.PIPELINE_TYPE_SEARCH_OTHER), + ('X', pipeline_model.PIPELINE_TYPE_SEARCH_OTHER), + ('HardwareInjection', pipeline_model.PIPELINE_TYPE_OTHER), + ('Omega', pipeline_model.PIPELINE_TYPE_OTHER), + ('Q', pipeline_model.PIPELINE_TYPE_OTHER), + ('Fermi', pipeline_model.PIPELINE_TYPE_EXTERNAL), + ('SNEWS', pipeline_model.PIPELINE_TYPE_EXTERNAL), + ('Swift', pipeline_model.PIPELINE_TYPE_EXTERNAL), +] + +DEFAULT_PIPELINE_TYPE = pipeline_model.PIPELINE_TYPE_OTHER + +def update_pipeline_types(apps, schema_editor): + Pipeline = apps.get_model('events', 'Pipeline') + + for p_tuple in PIPELINES: + p = Pipeline.objects.get(name=p_tuple[0]) + p.pipeline_type = p_tuple[1] + p.save(update_fields=['pipeline_type']) + + +def revert_pipeline_types(apps, schema_editor): + Pipeline = apps.get_model('events', 'Pipeline') + + for p_tuple in PIPELINES: + p = Pipeline.objects.get(name=p_tuple[0]) + p.pipeline_type = DEFAULT_PIPELINE_TYPE + p.save(update_fields=['pipeline_type']) + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0038_pipeline_pipeline_type'), + ] + + operations = [ + migrations.RunPython(update_pipeline_types, revert_pipeline_types), + ] diff --git a/gracedb/events/models.py b/gracedb/events/models.py index 7d7ddf8de230eeb83da786ce28ce37b3921261a5..528174a68f1adf8fa4aa1ab14d47e5774f570d24 100644 --- a/gracedb/events/models.py +++ b/gracedb/events/models.py @@ -65,14 +65,30 @@ class Group(models.Model): def __unicode__(self): return self.name + class Pipeline(models.Model): + PIPELINE_TYPE_EXTERNAL = 'E' + PIPELINE_TYPE_OTHER = 'O' + PIPELINE_TYPE_SEARCH_OTHER = 'SO' + PIPELINE_TYPE_SEARCH_PRODUCTION = 'SP' + PIPELINE_TYPE_CHOICES = ( + (PIPELINE_TYPE_EXTERNAL, 'external'), + (PIPELINE_TYPE_OTHER, 'other'), + (PIPELINE_TYPE_SEARCH_OTHER, 'non-production search'), + (PIPELINE_TYPE_SEARCH_PRODUCTION, 'production search'), + ) name = models.CharField(max_length=100) + # Are submissions allowed for this pipeline? enabled = models.BooleanField(default=True) - # XXX Need any additional fields? Like a librarian email? Or perhaps even fk? + # Pipeline type + pipeline_type = models.CharField(max_length=2, + choices=PIPELINE_TYPE_CHOICES) + class Meta: permissions = ( ('manage_pipeline', 'Can enable or disable pipeline'), ) + def __unicode__(self): return self.name