From b087a4d1424fae180b5bf78d2d250666d6fdc3f7 Mon Sep 17 00:00:00 2001
From: Nico Vermaas <vermaas@astron.nl>
Date: Thu, 1 Apr 2021 14:21:02 +0200
Subject: [PATCH] adding multi hold/resume functionality in query

---
 .../query/action_buttons_per_row.html         |  4 ++--
 .../query/set_multi_status_panel.html         |  5 +++-
 .../templates/taskdatabase/index.html         |  2 +-
 atdb/taskdatabase/urls.py                     |  3 ++-
 atdb/taskdatabase/views.py                    | 23 ++++++++++++++-----
 5 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/atdb/taskdatabase/templates/query/action_buttons_per_row.html b/atdb/taskdatabase/templates/query/action_buttons_per_row.html
index 03e74f55..6fae0ffc 100644
--- a/atdb/taskdatabase/templates/query/action_buttons_per_row.html
+++ b/atdb/taskdatabase/templates/query/action_buttons_per_row.html
@@ -1,9 +1,9 @@
  <a href="{% url 'task-details' record.pk  0 %}" class="btn btn-primary btn-sm" role="button"><i class="fas fa-list"></i> Details</a>&nbsp;
 
 {% if record.resume  %}
-       <a href="{% url 'task-hold-resume' record.pk 'hold' 0 %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-pause"></i> hold</a>
+       <a href="{% url 'task-hold-resume' record.pk 'hold' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-pause"></i> hold</a>
  {% endif %}
 
 {% if not record.resume  %}
-       <a href="{% url 'task-hold-resume' record.pk 'resume' 0 %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-play"></i> start</a>
+       <a href="{% url 'task-hold-resume' record.pk 'resume' %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-play"></i> start</a>
 {% endif %}
\ No newline at end of file
diff --git a/atdb/taskdatabase/templates/query/set_multi_status_panel.html b/atdb/taskdatabase/templates/query/set_multi_status_panel.html
index 00cb2f62..d6daa63b 100644
--- a/atdb/taskdatabase/templates/query/set_multi_status_panel.html
+++ b/atdb/taskdatabase/templates/query/set_multi_status_panel.html
@@ -8,7 +8,10 @@
                  <p>Click to change Status for all these tasks</p>
                  <table>
                     <tr>
-                     <a href="{% url 'task-multi-setstatus' 'defining' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defining</a>&nbsp;
+                     <a href="{% url 'task-multi-hold' 'hold' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-pause"></i> hold</a>&nbsp;
+                     <a href="{% url 'task-multi-hold' 'resume' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-play"></i> start</a>&nbsp;
+
+                        <a href="{% url 'task-multi-setstatus' 'defining' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defining</a>&nbsp;
                      <a href="{% url 'task-multi-setstatus' 'defined' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a>&nbsp;
                      <a href="{% url 'task-multi-setstatus' 'staged' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a>&nbsp;
                      <a href="{% url 'task-multi-setstatus' 'processed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a>&nbsp;
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index 95f65c94..a3413b7f 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -80,7 +80,7 @@
         {% include 'taskdatabase/pagination.html' %}
        </div>
     </div>
-    <p class="footer"> Version 1.0.0 (1 apr 2021 - 12:00)
+    <p class="footer"> Version 1.0.0 (1 apr 2021 - 14:00)
 
 </div>
 
diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py
index 73ac3e58..e7474e03 100644
--- a/atdb/taskdatabase/urls.py
+++ b/atdb/taskdatabase/urls.py
@@ -64,7 +64,8 @@ urlpatterns = [
     path('tasks/task-set-onhold-filter/<onhold>', views.TaskSetOnHoldFilter, name='task-set-onhold-filter'),
     path('tasks/<int:pk>/set_status/<new_status>/<page>', views.TaskSetStatusTables2, name = 'task-setstatus'),
     path('tasks/set_status_multi/<new_status>', views.TaskSetStatusMulti, name='task-multi-setstatus'),
-
+    path('tasks/set_multi_hold/<onhold>', views.TaskMultiHold, name='task-multi-hold'),
 
     path('tasks/<int:pk>/hold/<hold_it>/<page>', views.Hold, name='task-hold-resume'),
+    path('tasks/<int:pk>/hold/<hold_it>', views.Hold, name='task-hold-resume'),
 ]
\ No newline at end of file
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index b9757b70..ebfb1e47 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -8,7 +8,6 @@ from django.contrib.auth.decorators import login_required
 
 from django.views.generic import ListView
 from django.contrib import messages
-from django.core.cache import cache
 
 from rest_framework import generics, pagination
 from rest_framework.response import Response
@@ -453,7 +452,7 @@ class JobDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
 # set task status to 'new_status' - called from the GUI
 
 @login_required
-def Hold(request,pk,hold_it,page):
+def Hold(request,pk,hold_it,page=0):
     model = Task
     task = Task.objects.get(pk=pk)
     task.resume = (hold_it == 'resume')
@@ -537,10 +536,6 @@ def TaskSetStatusTables2(request,pk,new_status,page):
 def TaskSetStatusMulti(request, new_status):
     # read the current querylist from the session
 
-    # yikes, this doesn't work if 2 users are simultaneously logged in
-    # query_list = cache.get('query_list')
-    # cache.delete('query_list')
-
     # get the list of id's from the session
     query_list_of_ids = request.session['query_list_of_ids']
 
@@ -550,6 +545,22 @@ def TaskSetStatusMulti(request, new_status):
         task.save()
     return redirect('/atdb/query')
 
+
+@login_required
+def TaskMultiHold(request, onhold):
+    # read the current querylist from the session
+
+    # get the list of id's from the session
+    query_list_of_ids = request.session['query_list_of_ids']
+
+    for id in query_list_of_ids:
+        task = Task.objects.get(id=id[0])
+        task.resume = (onhold == 'resume')
+        task.save()
+
+    return redirect('/atdb/query')
+
+
 # /atdb/get_size?status__in=defined,staged
 class GetSizeView(generics.ListAPIView):
     queryset = Task.objects.all()
-- 
GitLab