diff --git a/atdb/docs/ATDB-LDV GUI.png b/atdb/docs/ATDB-LDV GUI.png index ccb21aab25225cf9a34ec2f64fc6b4b04c77acf1..e393889c1811c5024d6f1eaedf94080867818784 100644 Binary files a/atdb/docs/ATDB-LDV GUI.png and b/atdb/docs/ATDB-LDV GUI.png differ diff --git a/atdb/taskdatabase/templates/query/query.html b/atdb/taskdatabase/templates/query/query.html index 3bc2ad1d90fec179f8e31b00fb8eb220bdcb08a8..2514b9ce3d3dad01ea6eb20d5e589d2de47fe5ce 100644 --- a/atdb/taskdatabase/templates/query/query.html +++ b/atdb/taskdatabase/templates/query/query.html @@ -2,7 +2,7 @@ <!doctype html> <html> <head> - <title>Query</title> + <title>Query </title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> </head> <body> diff --git a/atdb/taskdatabase/templates/query/set_multi_status_panel.html b/atdb/taskdatabase/templates/query/set_multi_status_panel.html index 2d586db24ee973fb232cea307ff70b60e8fbfa50..2d3a71bedc791f37ed581e69d2d40ce2627cccd7 100644 --- a/atdb/taskdatabase/templates/query/set_multi_status_panel.html +++ b/atdb/taskdatabase/templates/query/set_multi_status_panel.html @@ -11,13 +11,13 @@ <a href="{% url 'task-multi-hold' 'hold' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-pause"></i> hold</a> <a href="{% url 'task-multi-hold' 'resume' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-play"></i> start</a> - <a href="{% url 'task-multi-setstatus' 'defined' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> - <a href="{% url 'task-multi-setstatus' 'staged' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> - <a href="{% url 'task-multi-setstatus' 'processed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> - <a href="{% url 'task-multi-setstatus' 'validated' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> - <a href="{% url 'task-multi-setstatus' 'scrubbed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> - <a href="{% url 'task-multi-setstatus' 'archived' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> - <a href="{% url 'task-multi-setstatus' 'finished' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> + <a href="{% url 'task-multi-setstatus' 'defined' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> + <a href="{% url 'task-multi-setstatus' 'staged' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> + <a href="{% url 'task-multi-setstatus' 'processed' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> + <a href="{% url 'task-multi-setstatus' 'validated' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> + <a href="{% url 'task-multi-setstatus' 'scrubbed' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> + <a href="{% url 'task-multi-setstatus' 'archived' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> + <a href="{% url 'task-multi-setstatus' 'finished' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> </tr> </table> {% endif %} diff --git a/atdb/taskdatabase/templates/query/status_buttons_per_row.html b/atdb/taskdatabase/templates/query/status_buttons_per_row.html index f5541daf11ddd4045bac62565437761fcb3c9f9e..72f2e697972bf3ef43bf1715f3de3a48eed023ca 100644 --- a/atdb/taskdatabase/templates/query/status_buttons_per_row.html +++ b/atdb/taskdatabase/templates/query/status_buttons_per_row.html @@ -1,13 +1,13 @@ {% if user.is_staff %} - <a href="{% url 'task-setstatus' record.pk 'defined' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> - <a href="{% url 'task-setstatus' record.pk 'staged' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> - <a href="{% url 'task-setstatus' record.pk 'fetched' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a> - <a href="{% url 'task-setstatus' record.pk 'processed' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> - <a href="{% url 'task-setstatus' record.pk 'stored' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a> - <a href="{% url 'task-setstatus' record.pk 'validated' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> - <a href="{% url 'task-setstatus' record.pk 'scrubbed' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> - <a href="{% url 'task-setstatus' record.pk 'archived' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> - <a href="{% url 'task-setstatus' record.pk 'finished' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> + <a href="{% url 'task-setstatus' record.pk 'defined' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> defined</a> + <a href="{% url 'task-setstatus' record.pk 'staged' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a> + <a href="{% url 'task-setstatus' record.pk 'fetched' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a> + <a href="{% url 'task-setstatus' record.pk 'processed' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a> + <a href="{% url 'task-setstatus' record.pk 'stored' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a> + <a href="{% url 'task-setstatus' record.pk 'validated' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a> + <a href="{% url 'task-setstatus' record.pk 'scrubbed' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a> + <a href="{% url 'task-setstatus' record.pk 'archived' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a> + <a href="{% url 'task-setstatus' record.pk 'finished' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a> {% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index cf17fba983f530a092ccf04a26c7d88f90bbbd26..20f2239973f81aac878c479966f336a0e408a092 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 (28 oct 2021 - 14:00) + <p class="footer"> Version 1.0.0 (29 oct 2021 - 12:00) </div> diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index 074841362a6208514fbb1000057b95a6ce1a7676..a940de3ce5a942eb018ab3e4b79147bc66f21356 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -62,8 +62,8 @@ urlpatterns = [ path('tasks/set_filter/<filter>', views.TaskSetFilter, name='task-set-filter'), path('tasks/set_active_filter', views.TaskSetActiveFilter, name='task-set-active-filter'), 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.TaskMultiStatus, name='task-multi-setstatus'), + path('tasks/<int:pk>/set_status/<new_status>/<query_params>', views.TaskSetStatusTables2, name = 'task-setstatus'), + path('tasks/set_status_multi/<new_status>/<query_params>', views.TaskMultiStatus, 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'), diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 4fd71599493820e2571710489ed2ee0a73b7a575..76f2ec46f2c0ebadfdd1e96d08cf3bcae8c491e7 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -1,11 +1,13 @@ import logging +import json from . import config from django.contrib.auth.decorators import login_required from django.views.generic import ListView from django.contrib import messages +from django.http import QueryDict from rest_framework import generics, pagination from rest_framework.response import Response @@ -14,14 +16,12 @@ import django_filters from django_filters import rest_framework as filters from django_filters.views import FilterView from django_tables2.views import SingleTableMixin +from django_tables2 import SingleTableView from django.shortcuts import render, redirect from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -from django_tables2 import SingleTableView - from django.conf import settings - from .models import Task, Status, Workflow, LogEntry, Configuration, Job from .tables import TaskTable @@ -134,7 +134,6 @@ class QueryView(SingleTableMixin, FilterView): def get_table_data(self): # https://stackoverflow.com/questions/7763115/django-passing-data-between-views - count = self.object_list.count() try: @@ -149,9 +148,6 @@ class QueryView(SingleTableMixin, FilterView): return self.object_list - - - # ---------- GUI Views ----------- class IndexView(ListView): @@ -541,17 +537,45 @@ def SortTasks(request,sort): return redirect('/atdb') +def convert_query_params_to_url(query_params): + # to keep the state of the current query, + # loop through the current query_params and send them back into the next request + + # because the query_params come in as a QueryDict converted to a string + # it needs some converting to a json string that can be loaded into a dict + + s = query_params.replace('<QueryDict: ','')[:-1] + s = s.replace('[','') + s = s.replace(']', '') + s = s.replace('\'', '"') + + # read the constructed json as a dict + d = json.loads(s) + + # construct the dict to a proper url + params = "" + for key in d: + params = params + "&" + key + "=" + d[key] + print(params) + + return params + + @login_required -def TaskSetStatusTables2(request,pk,new_status,page): +def TaskSetStatusTables2(request,pk,new_status,query_params): model = Task task = Task.objects.get(pk=pk) task.new_status = new_status task.save() - return redirect('/atdb/query/?page='+page) + + current_query_params = convert_query_params_to_url(query_params) + #current_query_params = "id=&id__gte=&id__lte=&workflow__id=&filter=%09test&filter__icontains=&priority=&priority__gte=&priority__lte=&status__icontains=&status__in=&project=&project__icontains=&sas_id=&sas_id__icontains=&resume=unknown" + return redirect('/atdb/query/?' + current_query_params) + @login_required -def TaskMultiStatus(request, new_status): +def TaskMultiStatus(request, new_status, query_params): # get the list of id's from the session query_list_of_ids = request.session['query_list_of_ids'] count = len(query_list_of_ids) @@ -562,7 +586,14 @@ def TaskMultiStatus(request, new_status): task = Task.objects.get(id=id[0]) task.new_status = new_status task.save() - return redirect('/atdb/query') + + current_query_params = request.session['current_query_params'] + return redirect('/atdb/query?'+current_query_params) + + # add the current query parameters to the session so that they survive + # the request/response to the confirmation page (which has other query parameters) + current_query_params = convert_query_params_to_url(query_params) + request.session['current_query_params'] = current_query_params return render(request, "query/confirm_multi_change.html",{'new_value': new_status, 'count' : count})