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

add purge policy buttons to Filter page

parent ecbdc89d
Branches
No related tags found
1 merge request!318add purge policy buttons to Filter page
Pipeline #55150 passed
...@@ -20,15 +20,20 @@ class ResumeColumn(tables.BooleanColumn): ...@@ -20,15 +20,20 @@ class ResumeColumn(tables.BooleanColumn):
def render(self, record): def render(self, record):
return record.resume return record.resume
class PurgeColumn(tables.BooleanColumn):
def render(self, record):
return record.purge_policy
class TaskTable(tables.Table): class TaskTable(tables.Table):
class Meta: class Meta:
model = Task model = Task
template_name = "django_tables2/bootstrap4.html" template_name = "django_tables2/bootstrap4.html"
fields = ("id", "workflow.id","filter","priority","status","quality","project","sas_id","resume","actions","buttons") fields = ("id", "workflow.id","filter","priority","status","quality","project","sas_id","resume","purge","actions","buttons")
# columns that need specific rendering # columns that need specific rendering
status = StatusColumn() status = StatusColumn()
purge = PurgeColumn()
actions = tables.TemplateColumn(verbose_name='Details', actions = tables.TemplateColumn(verbose_name='Details',
template_name='taskdatabase/query/action_buttons_per_row.html', template_name='taskdatabase/query/action_buttons_per_row.html',
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
{% include 'taskdatabase/pagination.html' %} {% include 'taskdatabase/pagination.html' %}
</div> </div>
</div> </div>
<p class="footer"> Version 3 Aug 2023 <p class="footer"> Version 4 Aug 2023
</div> </div>
{% include 'taskdatabase/refresh.html' %} {% include 'taskdatabase/refresh.html' %}
......
...@@ -7,3 +7,11 @@ ...@@ -7,3 +7,11 @@
{% if not record.resume %} {% if not record.resume %}
<a href="{% url 'query-hold-resume' record.pk 'resume' request.GET %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-play"></i> start</a> <a href="{% url 'query-hold-resume' record.pk 'resume' request.GET %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-play"></i> start</a>
{% endif %} {% endif %}
{% if record.purge_policy == 'no' %}
<a href="{% url 'query-purge' record.pk 'yes' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-xmark"></i> purge: yes</a>
{% endif %}
{% if record.purge_policy == 'yes' %}
<a href="{% url 'query-purge' record.pk 'no' request.GET %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> purge: no</a>
{% endif %}
\ No newline at end of file
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
<tr> <tr>
<a href="{% url 'task-multi-hold' 'hold' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-pause"></i> hold</a>&nbsp; <a href="{% url 'task-multi-hold' 'hold' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-pause"></i> hold</a>&nbsp;
<a href="{% url 'task-multi-hold' 'resume' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-play"></i> start</a>&nbsp; <a href="{% url 'task-multi-hold' 'resume' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-play"></i> start</a>&nbsp;
<a href="{% url 'task-multi-purge' 'yes' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-xmark"></i> purge: yes</a>&nbsp;
<a href="{% url 'task-multi-purge' 'no' request.GET %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-check"></i> purge: no</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' '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' 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' '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' 'fetched' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a>&nbsp; <a href="{% url 'task-multi-setstatus' 'fetched' request.GET %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> fetched</a>&nbsp;
......
...@@ -114,9 +114,11 @@ urlpatterns = [ ...@@ -114,9 +114,11 @@ urlpatterns = [
path('tasks/<int:pk>/set_status/<new_status>/<query_params>', 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>/<query_params>', 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>/<query_params>', views.TaskMultiHold, name='task-multi-hold'), path('tasks/set_multi_hold/<onhold>/<query_params>', views.TaskMultiHold, name='task-multi-hold'),
path('tasks/set_multi_purge/<purge_policy>/<query_params>', views.TaskMultiPurge, name='task-multi-purge'),
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'),
path('tasks/<int:pk>/hold/<hold_it>', views.Hold, name='task-hold-resume'), path('tasks/<int:pk>/hold/<hold_it>', views.Hold, name='task-hold-resume'),
path('tasks/<int:pk>/query-hold/<hold_it>/<query_params>', views.HoldQuery, name='query-hold-resume'), path('tasks/<int:pk>/query-hold/<hold_it>/<query_params>', views.HoldQuery, name='query-hold-resume'),
path('tasks/<int:pk>/hold/<hold_it>/<page>', views.Hold, name='service-hold-resume'), path('tasks/<int:pk>/hold/<hold_it>/<page>', views.Hold, name='service-hold-resume'),
path('tasks/<int:pk>/query-purge/<purge_policy>/<query_params>', views.PurgeQuery, name='query-purge'),
] ]
...@@ -82,6 +82,7 @@ class TaskFilterQueryPage(filters.FilterSet): ...@@ -82,6 +82,7 @@ class TaskFilterQueryPage(filters.FilterSet):
'quality': ['icontains', 'in'], 'quality': ['icontains', 'in'],
'project': ['exact', 'icontains', 'in'], 'project': ['exact', 'icontains', 'in'],
'sas_id': ['exact', 'icontains', 'in'], 'sas_id': ['exact', 'icontains', 'in'],
'purge_policy': ['icontains'],
#'sas_id_archived': ['exact', 'icontains', 'in'], #'sas_id_archived': ['exact', 'icontains', 'in'],
} }
...@@ -1045,6 +1046,16 @@ def HoldQuery(request, pk, hold_it, query_params): ...@@ -1045,6 +1046,16 @@ def HoldQuery(request, pk, hold_it, query_params):
return redirect_with_params('query', '?' + current_query_params) return redirect_with_params('query', '?' + current_query_params)
def PurgeQuery(request, pk, purge_policy, query_params):
model = Task
task = Task.objects.get(pk=pk)
task.purge_policy = purge_policy
task.save()
current_query_params = convert_query_params_to_url(query_params)
return redirect_with_params('query', '?' + current_query_params)
@login_required @login_required
def ServiceHoldResume(request, name, hostname, enabled): def ServiceHoldResume(request, name, hostname, enabled):
model = LatestMonitor model = LatestMonitor
...@@ -1418,6 +1429,30 @@ def TaskMultiHold(request, onhold, query_params): ...@@ -1418,6 +1429,30 @@ def TaskMultiHold(request, onhold, query_params):
return render(request, "taskdatabase/query/confirm_multi_change.html", {'new_value': onhold, 'count': count}) return render(request, "taskdatabase/query/confirm_multi_change.html", {'new_value': onhold, 'count': count})
@login_required
def TaskMultiPurge(request, purge_policy, query_params):
# get the list of id's from the session
filtered_tasks_as_list = request.session['filtered_tasks_as_list']
count = len(filtered_tasks_as_list)
if request.method == "POST":
for id in filtered_tasks_as_list:
task = Task.objects.get(id=id)
task.purge_policy = purge_policy
task.save()
current_query_params = request.session['current_query_params']
return redirect_with_params('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, "taskdatabase/query/confirm_multi_change.html", {'new_value': purge_policy, 'count': count})
# /atdb/get_size?status__in=defined,staged # /atdb/get_size?status__in=defined,staged
class GetSizeView(generics.ListAPIView): class GetSizeView(generics.ListAPIView):
queryset = Task.objects.all() queryset = Task.objects.all()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment