Skip to content
Snippets Groups Projects
Commit 52d732f3 authored by Nico Vermaas's avatar Nico Vermaas
Browse files

Merge branch 'SDC-1144-summary-tasks' into 'master'

add update-summary-flag endpoint for possible data migration

See merge request !344
parents 32c9b9e7 6c4fe630
No related branches found
No related tags found
1 merge request!344add update-summary-flag endpoint for possible data migration
Pipeline #73343 passed
......@@ -154,6 +154,7 @@ def check_if_summary(task):
for tar in tars:
if 'summary' in tar['basename']:
# a summary tarball was found, this task is a summary task
logger.info(f'task {task.id} with workflow {task.workflow} is a summary task')
return True
except:
# no 'tar_archive' was found
......
......@@ -133,4 +133,5 @@ urlpatterns = [
#some migration and repair endpoints
path('tasks/repair/associate-activities/', views.AssociateActivities, name='associate-activities'),
path('tasks/repair/update-activity/<sas_id>', views.UpdateActivitySasId, name='update-activity-sasid'),
path('tasks/repair/update-summary-flag/<task_id>', views.UpdateSummaryFlag, name='update-summary-flag'),
]
......@@ -24,6 +24,8 @@ from rest_framework.request import Request
from django.conf import settings
from .models import Activity, Task, Workflow, LogEntry, Configuration, Job, PostProcessingRule, Monitor, LatestMonitor
from .models import check_if_summary
from .services.common import State
from .services.signals import disconnect_signals, connect_signals
from .tables import TaskTable
......@@ -1685,7 +1687,7 @@ class GetUniqueValuesForKey(generics.ListAPIView):
@staff_member_required
def AssociateActivities(request):
# disconnect the signals to avoid save recursion
# disconnect the signals to avoid unneccesary updates
disconnect_signals()
#tasks = Task.objects.filter(activity__isnull=True)[:10000]
......@@ -1734,3 +1736,26 @@ def UpdateActivitySasId(request, sas_id):
'total': total
})
def UpdateSummaryFlag(request, task_id):
# this function is called externally to avoid worker timeouts
# http://localhost:8000/atdb/tasks/repair/update-summary-flag/12345
try:
task = Task.objects.get(id=task_id)
if not task.is_summary:
is_summary = check_if_summary(task)
if is_summary:
# disconnect the signals to avoid unneccesary updates
disconnect_signals()
task.save()
connect_signals()
except Exception as error:
logger.error(error)
return JsonResponse({
'error': str(error)
})
return JsonResponse({
'is_summary': task.is_summary
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment