From 7b9956a604ee7f67b740bc00cc59878a66091b9d Mon Sep 17 00:00:00 2001
From: Vermaas <vermaas@astron.nl>
Date: Fri, 16 Feb 2024 11:40:05 +0100
Subject: [PATCH] update dev database

---
 .../templates/taskdatabase/index.html         |  2 +-
 .../validation/validation_buttons.html        |  6 ++--
 atdb/taskdatabase/urls.py                     |  1 +
 atdb/taskdatabase/views.py                    | 28 +++++++++++++++++++
 4 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index f4fb3278..178726d1 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 16 Feb 2024 (7:00)
+    <p class="footer"> Version 16 Feb 2024 (11:00)
 </div>
 
 {% include 'taskdatabase/refresh.html' %}
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html b/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html
index e5f633f7..8ecf45fd 100644
--- a/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/validation_buttons.html
@@ -1,4 +1,4 @@
-<!-- keep the old mechanism in comments to test/evaluate, remove later when it works -->
+<!-- keep the old mechanism in comments to test/evaluate, remove later when it works
 
  {% if task.sasid_is_verified %}
     <a href="{% url 'task-validate-sasid' task.pk 'poor' 'validated' my_tasks.number %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-check"></i> P</a>
@@ -16,7 +16,8 @@
     <a href="{% url 'task-validate-sasid' task.pk 'calculated' 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> Validate</a>
  {% endif %}
 
-<!-- new activity mechanism, to enable SDC-1188
+-->
+<!-- new activity mechanism, to enable SDC-1188 -->
  {% if task.activity.is_verified %}
     <a href="{% url 'task-validate-sasid' task.pk 'poor' 'validated' my_tasks.number %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-check"></i> P</a>
  {% endif %}
@@ -32,4 +33,3 @@
  {% if task.activity.is_verified %}
     <a href="{% url 'task-validate-sasid' task.pk 'calculated' 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> Validate</a>
  {% endif %}
--->
\ No newline at end of file
diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py
index bf8ed0a4..981c97a9 100644
--- a/atdb/taskdatabase/urls.py
+++ b/atdb/taskdatabase/urls.py
@@ -133,6 +133,7 @@ urlpatterns = [
     #some migration and repair endpoints
     path('tasks/repair/associate-activities/', views.AssociateActivities, name='associate-activities'),
     path('tasks/repair/update-all-activities/', views.UpdateAllActivities, name='update-all-activities'),
+    path('tasks/repair/update-activity/<sas_id>', views.UpdateActivitySasId, name='update-activity-sasid'),
     path('tasks/repair/update-failed-tasks/', views.UpdateFailedTasks, name='update-failed-tasks'),
     path('tasks/repair/update-ingestq-tasks/<batch_size>', views.UpdateIngestQTasks, name='update-ingestq-tasks'),
     path('tasks/repair/update-finished-tasks/', views.UpdateFinishedTasks, name='update-finished-tasks'),
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 44a6189a..d049b9e6 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -9,6 +9,7 @@ from django.contrib import messages
 
 from rest_framework import generics
 from rest_framework.response import Response
+from django.http import JsonResponse
 
 from django_filters import rest_framework as filters
 from django_filters.views import FilterView
@@ -1728,6 +1729,33 @@ def UpdateAllActivities(request):
 
     return redirect('index')
 
+def UpdateActivitySasId(request, sas_id):
+    # this function is called externally to avoid worker timeouts
+    # http://localhost:8000/atdb/tasks/repair/update-activity/600907
+
+    try:
+        activity = Activity.objects.get(sas_id=sas_id)
+
+        tasks = Task.objects.filter(sas_id=activity.sas_id)
+        total = tasks.count()
+        i = 0
+
+        for task in tasks:
+            i += 1
+            activities_handler.update_activity(task)
+            logger.info(f'{i} of {total} for sas_id = {sas_id}')
+
+        logger.info(f'UpdateActivitySasId {sas_id}')
+    except Exception as error:
+        logger.error(error)
+        return JsonResponse({
+            'error': error
+        })
+
+    return JsonResponse({
+        'total': total
+    })
+
 @staff_member_required
 def UpdateFailedTasks(request):
 
-- 
GitLab