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

Keep state of the query fields in the Query page when a SetStatus button is...

Keep state of the query fields in the Query page when a SetStatus button is clicked (also for multi set status)
parent ee9a5cd9
Branches
No related tags found
3 merge requests!143Query Page:,!138Keep state of the query fields in the Query page when a SetStatus button is...,!137Keep state of the query fields in the Query page when a SetStatus button is...
atdb/docs/ATDB-LDV GUI.png

147 KiB | W: | H:

atdb/docs/ATDB-LDV GUI.png

157 KiB | W: | H:

atdb/docs/ATDB-LDV GUI.png
atdb/docs/ATDB-LDV GUI.png
atdb/docs/ATDB-LDV GUI.png
atdb/docs/ATDB-LDV GUI.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -11,13 +11,13 @@ ...@@ -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>&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-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' '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' 'defined' request.GET %}" 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' 'staged' request.GET %}" 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; <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>&nbsp;
<a href="{% url 'task-multi-setstatus' 'validated' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> validated</a>&nbsp; <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>&nbsp;
<a href="{% url 'task-multi-setstatus' 'scrubbed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> scrubbed</a>&nbsp; <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>&nbsp;
<a href="{% url 'task-multi-setstatus' 'archived' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> archived</a>&nbsp; <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>&nbsp;
<a href="{% url 'task-multi-setstatus' 'finished' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a>&nbsp; <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>&nbsp;
</tr> </tr>
</table> </table>
{% endif %} {% endif %}
......
{% if user.is_staff %} {% 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 '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' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> staged</a>&nbsp; <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>&nbsp;
<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>&nbsp; <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>&nbsp;
<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 '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' '1' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> stored</a>&nbsp;&nbsp; <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>&nbsp;&nbsp;
<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>&nbsp; <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>&nbsp;
<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>&nbsp; <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>&nbsp;
<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 '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' '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 'finished' request.GET %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-sync-alt"></i> finished</a>
{% endif %} {% endif %}
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
{% include 'taskdatabase/pagination.html' %} {% include 'taskdatabase/pagination.html' %}
</div> </div>
</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> </div>
......
...@@ -62,8 +62,8 @@ urlpatterns = [ ...@@ -62,8 +62,8 @@ urlpatterns = [
path('tasks/set_filter/<filter>', views.TaskSetFilter, name='task-set-filter'), 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/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/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/<int:pk>/set_status/<new_status>/<query_params>', views.TaskSetStatusTables2, name = 'task-setstatus'),
path('tasks/set_status_multi/<new_status>', views.TaskMultiStatus, name='task-multi-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/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>/<page>', views.Hold, name='task-hold-resume'),
......
import logging import logging
import json
from . import config from . import config
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.views.generic import ListView from django.views.generic import ListView
from django.contrib import messages from django.contrib import messages
from django.http import QueryDict
from rest_framework import generics, pagination from rest_framework import generics, pagination
from rest_framework.response import Response from rest_framework.response import Response
...@@ -14,14 +16,12 @@ import django_filters ...@@ -14,14 +16,12 @@ import django_filters
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from django_filters.views import FilterView from django_filters.views import FilterView
from django_tables2.views import SingleTableMixin from django_tables2.views import SingleTableMixin
from django_tables2 import SingleTableView
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django_tables2 import SingleTableView
from django.conf import settings from django.conf import settings
from .models import Task, Status, Workflow, LogEntry, Configuration, Job from .models import Task, Status, Workflow, LogEntry, Configuration, Job
from .tables import TaskTable from .tables import TaskTable
...@@ -134,7 +134,6 @@ class QueryView(SingleTableMixin, FilterView): ...@@ -134,7 +134,6 @@ class QueryView(SingleTableMixin, FilterView):
def get_table_data(self): def get_table_data(self):
# https://stackoverflow.com/questions/7763115/django-passing-data-between-views # https://stackoverflow.com/questions/7763115/django-passing-data-between-views
count = self.object_list.count() count = self.object_list.count()
try: try:
...@@ -149,9 +148,6 @@ class QueryView(SingleTableMixin, FilterView): ...@@ -149,9 +148,6 @@ class QueryView(SingleTableMixin, FilterView):
return self.object_list return self.object_list
# ---------- GUI Views ----------- # ---------- GUI Views -----------
class IndexView(ListView): class IndexView(ListView):
...@@ -541,17 +537,45 @@ def SortTasks(request,sort): ...@@ -541,17 +537,45 @@ def SortTasks(request,sort):
return redirect('/atdb') 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 @login_required
def TaskSetStatusTables2(request,pk,new_status,page): def TaskSetStatusTables2(request,pk,new_status,query_params):
model = Task model = Task
task = Task.objects.get(pk=pk) task = Task.objects.get(pk=pk)
task.new_status = new_status task.new_status = new_status
task.save() 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 @login_required
def TaskMultiStatus(request, new_status): def TaskMultiStatus(request, new_status, query_params):
# get the list of id's from the session # get the list of id's from the session
query_list_of_ids = request.session['query_list_of_ids'] query_list_of_ids = request.session['query_list_of_ids']
count = len(query_list_of_ids) count = len(query_list_of_ids)
...@@ -562,7 +586,14 @@ def TaskMultiStatus(request, new_status): ...@@ -562,7 +586,14 @@ def TaskMultiStatus(request, new_status):
task = Task.objects.get(id=id[0]) task = Task.objects.get(id=id[0])
task.new_status = new_status task.new_status = new_status
task.save() 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}) return render(request, "query/confirm_multi_change.html",{'new_value': new_status, 'count' : count})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment