From c2fd1c1aebc3065dd5ec6fba8aa523a0395c22ac Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Fri, 22 Apr 2022 14:23:29 +0200 Subject: [PATCH] SDC-512 - improving filter mechanism --- .../filter/clear_filter_button.html | 6 +- .../taskdatabase/filter/filter_buttons.html | 49 ++-- .../templates/taskdatabase/index.html | 2 +- .../quality/clear_filter_button.html | 5 + .../taskdatabase/quality/filter_buttons.html | 49 ++++ .../taskdatabase/quality/quality_page.html | 2 +- .../query/clear_filter_button.html | 5 + .../templates/taskdatabase/query/index.html | 2 +- atdb/taskdatabase/urls.py | 9 +- atdb/taskdatabase/views.py | 221 +++++++----------- 10 files changed, 181 insertions(+), 169 deletions(-) create mode 100644 atdb/taskdatabase/templates/taskdatabase/quality/clear_filter_button.html create mode 100644 atdb/taskdatabase/templates/taskdatabase/quality/filter_buttons.html create mode 100644 atdb/taskdatabase/templates/taskdatabase/query/clear_filter_button.html diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html b/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html index bcbe5e9e..d1619aa7 100644 --- a/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html +++ b/atdb/taskdatabase/templates/taskdatabase/filter/clear_filter_button.html @@ -1 +1,5 @@ -<a href="{% url 'clear-filter' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% if request.session.filtered == True %} + <a href="{% url 'clear-filter' 'index' %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% else %} + <a href="{% url 'clear-filter' 'index' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html b/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html index 0c20c676..3c811a82 100644 --- a/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html +++ b/atdb/taskdatabase/templates/taskdatabase/filter/filter_buttons.html @@ -3,29 +3,38 @@ <div class="card"> <div class="card-body"> <table> - <tr><td>Click to Filter</td></tr> + + <tr> + + {% if request.session.task_filter == "all" %} + <td>Click to Filter</td> + {% else %} + <td>Click to Filter ({{request.session.task_filter}})</td> + {% endif %} + </tr> + <tr> <td> {% include "taskdatabase/filter/clear_filter_button.html" %} - <a href="{% url 'task-set-active-filter' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Active</a> - <a href="{% url 'task-set-filter' 'failed' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Failed</a> - <a href="{% url 'task-set-onhold-filter' True %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> On Hold</a> - - <a href="{% url 'task-set-filter' 'defined' %}" class="btn btn-secondary btn-sm" role="button">defined</a> - <a href="{% url 'task-set-filter' 'staging' %}" class="btn btn-secondary btn-sm" role="button"><i>staging</i></a> - <a href="{% url 'task-set-filter' 'staged' %}" class="btn btn-secondary btn-sm" role="button">staged</a> - <a href="{% url 'task-set-filter' 'fetching' %}" class="btn btn-secondary btn-sm" role="button"><i>fetching</i></a> - <a href="{% url 'task-set-filter' 'fetched' %}" class="btn btn-secondary btn-sm" role="button">fetched</a> - <a href="{% url 'task-set-filter' 'processing' %}" class="btn btn-secondary btn-sm" role="button"><i>processing</i></a> - <a href="{% url 'task-set-filter' 'processed' %}" class="btn btn-secondary btn-sm" role="button">processed</a> - <a href="{% url 'task-set-filter' 'storing' %}" class="btn btn-secondary btn-sm" role="button"><i>storing</i></a> - <a href="{% url 'task-set-filter' 'stored' %}" class="btn btn-secondary btn-sm" role="button">stored</a> - <a href="{% url 'task-set-filter' 'validated' %}" class="btn btn-secondary btn-sm" role="button">validated</a> - <a href="{% url 'task-set-filter' 'scrubbing' %}" class="btn btn-secondary btn-sm" role="button"><i>scrubbing</i></a> - <a href="{% url 'task-set-filter' 'scrubbed' %}" class="btn btn-secondary btn-sm" role="button">scrubbed</a> - <a href="{% url 'task-set-filter' 'archiving' %}" class="btn btn-secondary btn-sm" role="button"><i>archiving</i></a> - <a href="{% url 'task-set-filter' 'archived' %}" class="btn btn-secondary btn-sm" role="button">archived</a> - <a href="{% url 'task-set-filter' 'finished' %}" class="btn btn-secondary btn-sm" role="button">finished</a> + <a href="{% url 'task-set-active-filter' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Active</a> + <a href="{% url 'task-set-filter' 'failed' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Failed</a> + <a href="{% url 'task-set-onhold-filter' True 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> On Hold</a> + + <a href="{% url 'task-set-filter' 'defined' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">defined</a> + <a href="{% url 'task-set-filter' 'staging' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>staging</i></a> + <a href="{% url 'task-set-filter' 'staged' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">staged</a> + <a href="{% url 'task-set-filter' 'fetching' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>fetching</i></a> + <a href="{% url 'task-set-filter' 'fetched' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">fetched</a> + <a href="{% url 'task-set-filter' 'processing' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>processing</i></a> + <a href="{% url 'task-set-filter' 'processed' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">processed</a> + <a href="{% url 'task-set-filter' 'storing' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>storing</i></a> + <a href="{% url 'task-set-filter' 'stored' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">stored</a> + <a href="{% url 'task-set-filter' 'validated' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">validated</a> + <a href="{% url 'task-set-filter' 'scrubbing' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>scrubbing</i></a> + <a href="{% url 'task-set-filter' 'scrubbed' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">scrubbed</a> + <a href="{% url 'task-set-filter' 'archiving' 'tasks' %}" class="btn btn-secondary btn-sm" role="button"><i>archiving</i></a> + <a href="{% url 'task-set-filter' 'archived' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">archived</a> + <a href="{% url 'task-set-filter' 'finished' 'tasks' %}" class="btn btn-secondary btn-sm" role="button">finished</a> </td> <td> diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index ea9b66c7..d8dd5264 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -34,7 +34,7 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 1.0.0 (21 apr 2021 - 13:00) + <p class="footer"> Version 1.0.0 (22 apr 2021 - 14:00) </div> diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/clear_filter_button.html b/atdb/taskdatabase/templates/taskdatabase/quality/clear_filter_button.html new file mode 100644 index 00000000..82490543 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/quality/clear_filter_button.html @@ -0,0 +1,5 @@ +{% if request.session.filtered == True %} + <a href="{% url 'clear-filter' 'quality' %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% else %} + <a href="{% url 'clear-filter' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/filter_buttons.html b/atdb/taskdatabase/templates/taskdatabase/quality/filter_buttons.html new file mode 100644 index 00000000..67877b8d --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/quality/filter_buttons.html @@ -0,0 +1,49 @@ + + + <div class="card"> + <div class="card-body"> + <table> + + <tr> + + {% if request.session.task_filter == "all" %} + <td>Click to Filter</td> + {% else %} + <td>Click to Filter ({{request.session.task_filter}})</td> + {% endif %} + </tr> + + <tr> + <td> + {% include "taskdatabase/quality/clear_filter_button.html" %} + <a href="{% url 'task-set-active-filter' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Active</a> + <a href="{% url 'task-set-filter' 'failed' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> Failed</a> + <a href="{% url 'task-set-onhold-filter' True 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-layer-group"></i> On Hold</a> + + <a href="{% url 'task-set-filter' 'defined' 'quality' %}" class="btn btn-secondary btn-sm" role="button">defined</a> + <a href="{% url 'task-set-filter' 'staging' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>staging</i></a> + <a href="{% url 'task-set-filter' 'staged' 'quality' %}" class="btn btn-secondary btn-sm" role="button">staged</a> + <a href="{% url 'task-set-filter' 'fetching' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>fetching</i></a> + <a href="{% url 'task-set-filter' 'fetched' 'quality' %}" class="btn btn-secondary btn-sm" role="button">fetched</a> + <a href="{% url 'task-set-filter' 'processing' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>processing</i></a> + <a href="{% url 'task-set-filter' 'processed' 'quality' %}" class="btn btn-secondary btn-sm" role="button">processed</a> + <a href="{% url 'task-set-filter' 'storing' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>storing</i></a> + <a href="{% url 'task-set-filter' 'stored' 'quality' %}" class="btn btn-secondary btn-sm" role="button">stored</a> + <a href="{% url 'task-set-filter' 'validated' 'quality' %}" class="btn btn-secondary btn-sm" role="button">validated</a> + <a href="{% url 'task-set-filter' 'scrubbing' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>scrubbing</i></a> + <a href="{% url 'task-set-filter' 'scrubbed' 'quality' %}" class="btn btn-secondary btn-sm" role="button">scrubbed</a> + <a href="{% url 'task-set-filter' 'archiving' 'quality' %}" class="btn btn-secondary btn-sm" role="button"><i>archiving</i></a> + <a href="{% url 'task-set-filter' 'archived' 'quality' %}" class="btn btn-secondary btn-sm" role="button">archived</a> + <a href="{% url 'task-set-filter' 'finished' 'quality' %}" class="btn btn-secondary btn-sm" role="button">finished</a> + + </td> + <td> + {% include 'taskdatabase/filter/search.html' %} + </td> + </tr> + + </table> + </div> + </div> + + diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html index 01c9c4c7..905758f4 100644 --- a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html @@ -11,7 +11,7 @@ <h3>Quality Diagnostics</h3> This overview shows the Quality Diagnostics of all the task that have this information. <hr> - {% include 'taskdatabase/filter/filter_buttons.html' %} + {% include 'taskdatabase/quality/filter_buttons.html' %} </div> </div> <div class="row"> diff --git a/atdb/taskdatabase/templates/taskdatabase/query/clear_filter_button.html b/atdb/taskdatabase/templates/taskdatabase/query/clear_filter_button.html new file mode 100644 index 00000000..a42b2965 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/query/clear_filter_button.html @@ -0,0 +1,5 @@ +{% if request.session.filtered == True %} + <a href="{% url 'clear-filter' 'query' %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% else %} + <a href="{% url 'clear-filter' 'query' %}" class="btn btn-secondary btn-sm" role="button"><i class="fas fa-window-close"></i> Clear Filter</a> +{% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/query/index.html b/atdb/taskdatabase/templates/taskdatabase/query/index.html index de6aedab..65e1fd4d 100644 --- a/atdb/taskdatabase/templates/taskdatabase/query/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/query/index.html @@ -15,7 +15,7 @@ <form action="" method="get" class="form form-inline"> {% bootstrap_form filter.form layout='inline' %} <button type="submit" class="btn-secondary btn-sm" title="Filter"><i class="fas fa-filter"></i> Filter</button> - {% include "taskdatabase/filter/clear_filter_button.html" %} + {% include "taskdatabase/query/clear_filter_button.html" %} </form> </div> {% endif %} diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index 4c2fb8db..50f9df5a 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -95,11 +95,10 @@ urlpatterns = [ path('tasks/<int:pk>/change_priority/<priority_change>', views.ChangePriority, name='task-change-priority'), path('tasks/sort-tasks/<sort>/<redirect_to_page>', views.SortTasks, name='sort-tasks'), - - 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/clear_filter/', views.TaskClearFilter, name='clear-filter'), + path('tasks/set_filter/<filter>/<redirect_to_page>', views.TaskSetFilter, name='task-set-filter'), + path('tasks/set_active_filter/<redirect_to_page>', views.TaskSetActiveFilter, name='task-set-active-filter'), + path('tasks/task-set-onhold-filter/<onhold>/<redirect_to_page>', views.TaskSetOnHoldFilter, name='task-set-onhold-filter'), + path('tasks/clear_filter/<redirect_to_page>', views.TaskClearFilter, name='clear-filter'), 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'), diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 02b3fbf6..d3eb018e 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -210,39 +210,8 @@ class IndexView(ListView): context_object_name = 'my_tasks' def get_queryset(self): - status = self.request.GET.get('status') - search_box = self.request.GET.get('search_box', None) - # get the sort variable from the session or use default - try: - sort = self.request.session['sort'] - except: - sort = '-creationTime' - - tasks = Task.objects.order_by(sort) - - # check if there is a 'task_filter' put on the session - try: - filter = self.request.session['task_filter'] - if filter != 'all': - tasks = get_filtered_tasks(filter, sort) - except: - pass - - # check if there is a 'task_onhold_filter' put on the session - try: - onhold = self.request.session['task_onhold_filter'] - if onhold != None: - tasks = tasks.filter(resume=not onhold) - - except: - pass - - if (search_box is not None): - tasks = get_filtered_tasks(search_box, sort) - - # only return the 'regular' tasks, and not the 'postprocessing' tasks in the GUI - # tasks = tasks.filter(task_type='regular') + tasks = get_filtered_tasks(self.request) paginator = Paginator(tasks, config.TASKS_PER_PAGE) # Show 50 tasks per page page = self.request.GET.get('page') @@ -278,38 +247,9 @@ class PostProcessingTasksView(ListView): context_object_name = 'my_tasks' def get_queryset(self): - status = self.request.GET.get('status') - search_box = self.request.GET.get('search_box', None) - - # get the sort variable from the session or use default - try: - sort = self.request.session['sort'] - except: - sort = '-creationTime' - - tasks = Task.objects.order_by(sort) + tasks = get_filtered_tasks(self.request) - # check if there is a 'task_filter' put on the session - try: - filter = self.request.session['task_filter'] - if filter != 'all': - tasks = get_filtered_tasks(filter, sort) - except: - pass - - # check if there is a 'task_onhold_filter' put on the session - try: - onhold = self.request.session['task_onhold_filter'] - if onhold != None: - tasks = tasks.filter(resume=not onhold) - - except: - pass - - if (search_box is not None): - tasks = get_filtered_tasks(search_box, sort) - - # only return the 'regular' tasks, and not the 'postprocessing' tasks in the GUI + # only return the 'postprocessing' tasks, and not the 'regular' tasks in the GUI tasks = tasks.filter(task_type='postprocessing') paginator = Paginator(tasks, config.TASKS_PER_PAGE) # Show 50 tasks per page @@ -347,26 +287,8 @@ class ShowQualityPage(ListView): context_object_name = 'my_tasks' def get_queryset(self): - search_box = self.request.GET.get('search_box', None) - - # get the sort variable from the session or use default - try: - sort = self.request.session['sort'] - except: - sort = '-creationTime' - tasks = Task.objects.order_by(sort) - - # check if there is a 'task_filter' put on the session - try: - filter = self.request.session['task_filter'] - if filter != 'all': - tasks = get_filtered_tasks(filter, sort) - except: - pass - - if (search_box is not None): - tasks = get_filtered_tasks(search_box, sort) + tasks = get_filtered_tasks(self.request) # exclude the tasks without quality information tasks = tasks.exclude(outputs__quality__isnull=True) @@ -407,26 +329,9 @@ class ShowValidationPage(ListView): context_object_name = 'my_tasks' def get_queryset(self): - search_box = self.request.GET.get('search_box', None) - # get the sort variable from the session or use default - try: - sort = self.request.session['sort'] - except: - sort = '-creationTime' - - stored_tasks = Task.objects.filter(status__icontains='stored').order_by(sort) - tasks = stored_tasks - # check if there is a 'task_filter' put on the session - try: - filter = self.request.session['task_filter'] - if filter != 'all': - tasks = get_filtered_tasks(filter, sort, stored_tasks) - except: - pass - - if (search_box is not None): - tasks = get_filtered_tasks(search_box, sort, stored_tasks) + stored_tasks = Task.objects.filter(status__icontains='stored') + tasks = get_filtered_tasks(self.request, stored_tasks) # exclude the failed tasks tasks = tasks.exclude(status__icontains="failed") @@ -466,27 +371,9 @@ class ShowFailuresPage(ListView): context_object_name = 'my_tasks' def get_queryset(self): - search_box = self.request.GET.get('search_box', None) - # get the sort variable from the session or use default - try: - sort = self.request.session['sort'] - except: - sort = '-creationTime' - - failed_tasks = Task.objects.filter(status__icontains='failed').order_by(sort) - tasks = failed_tasks - - # check if there is a 'task_filter' put on the session - try: - filter = self.request.session['task_filter'] - if filter != 'all': - tasks = get_filtered_tasks(filter, sort, failed_tasks) - except: - pass - - if (search_box is not None): - tasks = get_filtered_tasks(search_box, sort, failed_tasks) + failed_tasks = Task.objects.filter(status__icontains='failed') + tasks = get_filtered_tasks(self.request, failed_tasks) paginator = Paginator(tasks, config.TASKS_PER_PAGE) # Show 50 tasks per page page = self.request.GET.get('page') @@ -512,21 +399,58 @@ class ShowFailuresPage(ListView): # this provides a broad range of filters for the search_box in the GUI -def get_filtered_tasks(search, sort, tasks=None): - if tasks: - tasks_to_filter = tasks +def get_filtered_tasks(request, pre_filtered_tasks=None): + filtered_tasks=[] + + try: + my_sort = request.session['sort'] + except: + my_sort = '-creationTime' + + # if there is already a 'filtered_tasks_as_list' on the session, then show that. + filtered_tasks_as_list = request.session['filtered_tasks_as_list'] + if filtered_tasks_as_list: + if pre_filtered_tasks: + filtered_tasks = pre_filtered_tasks.filter(id__in=filtered_tasks_as_list) + else: + filtered_tasks = Task.objects.filter(id__in=filtered_tasks_as_list) else: - tasks_to_filter = Task.objects.all() + if pre_filtered_tasks: + filtered_tasks = pre_filtered_tasks + else: + filtered_tasks = Task.objects.all() + + # check if there is a status filter active + status_filter = request.session['task_filter'] + if status_filter != 'all': + if type(status_filter) is list: + filtered_tasks = filtered_tasks.filter(status__in=status_filter) + else: + filtered_tasks = filtered_tasks.filter(status__icontains=status_filter) + + # check if the on_hold filter is active + onhold = request.session['task_onhold_filter'] + if onhold != None: + filtered_tasks = filtered_tasks.filter(resume=not onhold) + + search = request.GET.get('search_box', None) + if (search is not None): + filtered_tasks = filtered_tasks.filter( + Q(id__contains=search) | + Q(sas_id__contains=search) | + Q(creationTime__icontains=search) | + Q(filter__icontains=search) | + Q(status__icontains=search) | + Q(status__in=search) | + Q(project__icontains=search)) + + + if (Task.objects.all().count() == filtered_tasks.count()): + request.session['filtered'] = False + else: + request.session['filtered'] = True - filtered_tasks = tasks_to_filter.filter( - Q(id__contains=search) | - Q(sas_id__contains=search) | - Q(creationTime__icontains=search) | - Q(filter__icontains=search) | - Q(status__icontains=search) | - Q(status__in=search) | - Q(project__icontains=search)).order_by(sort) - return filtered_tasks + return filtered_tasks.order_by(my_sort) class TaskTables2View(SingleTableView): @@ -540,7 +464,7 @@ def TaskDetails(request, id=0, page=0): task = Task.objects.get(id=id) # store the requested task_id on the session - request.session['task_id'] = task.id + request.session['task_id'] = task.idg except: # when an invalid id is given, like '/atdb/task_details/0/', @@ -952,6 +876,7 @@ def HoldQuery(request, pk, hold_it, query_params): current_query_params = convert_query_params_to_url(query_params) return redirect('/atdb/query/?' + current_query_params) + @login_required def ServiceHoldResume(request, name, hostname, enabled): model = LatestMonitor @@ -1014,34 +939,51 @@ def TaskRetry(request, pk, new_status, page=0): # set a filter value in the session, used later by the 'get_searched_tasks' mechanism -def TaskSetFilter(request, filter): +def TaskSetFilter(request, filter, redirect_to_page): request.session['task_filter'] = filter # switch off the other filters if filter == 'all': request.session['task_onhold_filter'] = None + if redirect_to_page == 'quality': + return redirect('/atdb/quality') + return redirect('/atdb/?page=1') # set the defined list of ACTIVE_STATUSSES on the session, used later by the 'get_searched_tasks' mechanism -def TaskSetActiveFilter(request): +def TaskSetActiveFilter(request, redirect_to_page): request.session['task_filter'] = settings.ACTIVE_STATUSSES request.session['task_onhold_filter'] = None + + if redirect_to_page == 'quality': + return redirect('/atdb/quality') return redirect('/atdb/?page=1') -def TaskSetOnHoldFilter(request, onhold): +def TaskSetOnHoldFilter(request, onhold, redirect_to_page): request.session['task_onhold_filter'] = onhold + + if redirect_to_page == 'quality': + return redirect('/atdb/quality') return redirect('/atdb/?page=1') -def TaskClearFilter(request): + +def TaskClearFilter(request, redirect_to_page): request.session['task_filter'] = 'all' request.session['task_onhold_filter'] = None request.session['filtered_tasks_as_list'] = None request.session['search_box'] = '' + request.session['filtered'] = False + + if redirect_to_page == 'quality': + return redirect('/atdb/quality') + if redirect_to_page == 'query': + return redirect('/atdb/query') return redirect('/atdb/?page=1') + @login_required def ChangePriority(request, pk, priority_change, page=0): model = Task @@ -1071,7 +1013,6 @@ def SortTasks(request, sort, redirect_to_page): return redirect(redirect_to_page) - 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 -- GitLab