diff --git a/atdb/taskdatabase/migrations/0042_task_is_summary.py b/atdb/taskdatabase/migrations/0042_task_is_summary.py new file mode 100644 index 0000000000000000000000000000000000000000..eae714e842c607213f3347d6e4666863706a668d --- /dev/null +++ b/atdb/taskdatabase/migrations/0042_task_is_summary.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0 on 2024-02-20 12:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('taskdatabase', '0041_alter_task_activity'), + ] + + operations = [ + migrations.AddField( + model_name='task', + name='is_summary', + field=models.BooleanField(default=False), + ), + ] diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 51f56a7fb0f12e13223ad6f62bad815ad9c59a73..ce55099efc62ec7cc6ed3ee95538cfb73fef0da2 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -88,7 +88,6 @@ def associate_task_with_activity(task): activity = Activity(sas_id=task.sas_id, project=task.project, - workflow_id = task.workflow.id, filter=task.filter) activity.save() @@ -140,6 +139,7 @@ class Task(models.Model): # Task control properties task_type = models.CharField(max_length=20, default="regular") + is_summary = models.BooleanField(default=False) filter = models.CharField(max_length=30, blank=True, null=True) environment = models.CharField(max_length=255, blank=True, null=True) new_status = models.CharField(max_length=50, default="defining", null=True) @@ -202,6 +202,11 @@ class Task(models.Model): tasks_for_this_sasid = Task.objects.filter(sas_id=self.sas_id) self.calculated_qualities = qualities.calculate_qualities(self, tasks_for_this_sasid, quality_thresholds) + # nv:20feb2024, check if this task is a summary task + if (self.status != State.PROCESSED.value) & (self.new_status == State.PROCESSED.value): + #task.is_summary = algorithms.check_if_summary(self) + pass + # make sure that every task has an activity (also for backward compatibility) associate_task_with_activity(self) diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index 3adcc01c29f84f437b30aa2a4de0156ad8fdb6ca..f80c4eb13fcfc3e9c0d7ddf93963f69114b2da89 100644 --- a/atdb/taskdatabase/serializers.py +++ b/atdb/taskdatabase/serializers.py @@ -97,7 +97,7 @@ class TaskReadSerializer(serializers.ModelSerializer): class Meta: model = Task - fields = ['id','task_type','creationTime','filter', + fields = ['id','task_type','is_summary','creationTime','filter', 'predecessor','predecessor_status','successors', 'joined_input_tasks','joined_output_task','joined_status', 'project','sas_id','priority','purge_policy','cleanup_policy','resume', diff --git a/atdb/taskdatabase/services/activities_handler.py b/atdb/taskdatabase/services/activities_handler.py index 1f215340685bc9cf2fee19fa673ba05b3b07da93..086542ddf6f35b4217ad3585d8533ab640895bf8 100644 --- a/atdb/taskdatabase/services/activities_handler.py +++ b/atdb/taskdatabase/services/activities_handler.py @@ -143,6 +143,10 @@ def update_activity(task): activity.filter = task.filter activity.save() - if activity.workflow_id != task.workflow.id: - activity.workflow_id = task.workflow.id - activity.save() \ No newline at end of file + try: + if activity.workflow_id != task.workflow.id: + activity.workflow_id = task.workflow.id + activity.save() + except: + # continue, workflow is not initially needed + logger.error(f'no workflow found for this task') \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index d9a8482a724472f6636c0183ba9522edad85f4a0..fc4fe7f33da131e313a1b83810dfa786f4e32ff6 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -31,7 +31,7 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 19 Feb 2024 + <p class="footer"> Version 20 Feb 2024 </div> {% include 'taskdatabase/refresh.html' %} diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index eb462904c64a075019df95d1337a09913418f55d..0ff77a34177461537ab5f09977cd1e8685835af8 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -57,6 +57,7 @@ class TaskFilter(filters.FilterSet): fields = { 'task_type': ['exact', 'icontains', 'in'], + 'is_summary': ['exact'], 'creationTime': ['icontains'], 'filter': ['exact', 'icontains'], 'workflow__id': ['exact', 'icontains'],