From af4742c7da8748e9ab9734b331522cc7406b7e66 Mon Sep 17 00:00:00 2001 From: Vermaas <vermaas@astron.nl> Date: Tue, 6 Feb 2024 17:36:56 +0100 Subject: [PATCH] experimenting with activities --- atdb/taskdatabase/services/activities.py | 27 +++++-------------- atdb/taskdatabase/services/signals.py | 2 +- .../templates/taskdatabase/ingest/tasks.html | 6 ++--- atdb/taskdatabase/views.py | 2 +- 4 files changed, 12 insertions(+), 25 deletions(-) diff --git a/atdb/taskdatabase/services/activities.py b/atdb/taskdatabase/services/activities.py index 198a103b..e46653fe 100644 --- a/atdb/taskdatabase/services/activities.py +++ b/atdb/taskdatabase/services/activities.py @@ -41,7 +41,7 @@ def calculate_ingested_fraction(this_task): return result -def associate_activity(task): +def associate_activity(task, save_task=True): if not task.activity: @@ -60,8 +60,10 @@ def associate_activity(task): activity.save() task.activity = activity - task.save() + if save_task: + task.save() + return task.activity def update_activity(task): """ @@ -77,24 +79,9 @@ def update_activity(task): """ logger.info(f'update_activity for task {task.id} with sas_id {task.sas_id} and status {task.status}') - try: - activity = Activity.objects.get(sas_id=task.sas_id) - except: - # no activity exists yet, create it - logger.info(f'create new activity for sas_id {task.sas_id}') - - activity = Activity(sas_id=task.sas_id, - workflow=task.workflow, - project=task.project, - filter=task.filter, - priority=task.priority, - archive=task.archive) - activity.save() - - # associate an activity to this tasks - if not task.activity: - activity = Activity.objects.get(sas_id=task.sas_id) - task.activity = activity + # do not save the task, + # because this function is called from signals where the task.save is delayed on purpose to avoid recursion + activity = associate_activity(task, save_task=False) # depending on the status transition, perform calculations if task.status == State.STORED.value: diff --git a/atdb/taskdatabase/services/signals.py b/atdb/taskdatabase/services/signals.py index 05d0c9c5..027b7385 100644 --- a/atdb/taskdatabase/services/signals.py +++ b/atdb/taskdatabase/services/signals.py @@ -69,7 +69,7 @@ def handle_post_save(sender, **kwargs): """ task = kwargs.get('instance') - # temporarily disconnect to avoid recursion. + # temporarily disconnect and save later, to avoid recursion. update_activity(task) disconnect_signals() diff --git a/atdb/taskdatabase/templates/taskdatabase/ingest/tasks.html b/atdb/taskdatabase/templates/taskdatabase/ingest/tasks.html index f7ba1aa9..7f4a80d1 100644 --- a/atdb/taskdatabase/templates/taskdatabase/ingest/tasks.html +++ b/atdb/taskdatabase/templates/taskdatabase/ingest/tasks.html @@ -24,12 +24,12 @@ {% endif %} </td> <td>{{ task.activity.ingestq_status }}</td> - <td>{{ task.sasid_ingested_fraction.completion }}%</td> + <td>{{ task.activity.ingested_fraction }}%</td> <td> - {% if task.sas_id_has_archived != None %} + {% if task.activity.has_archived != None %} <a href={{ task.sasid_path_to_lta }} target="_blank"> <img src="{% static 'taskdatabase/ldvlogo_small.png' %}" height="20" alt="link to LTA"> - {{ task.sas_id_has_archived }} + {{ task.activity.has_archived }} </a> {% else %} - diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 1ab90aec..32e41624 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -1717,4 +1717,4 @@ def AssociateActivities(request): activities.associate_activity(task) logger.info(f'{task.id} => {task.sas_id}') - + return redirect('index') \ No newline at end of file -- GitLab