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

Merge branch 'purge-policy-toggle' into 'master'

add purge policy buttons to Filter page

See merge request !318
parents ecbdc89d 41e27672
No related branches found
No related tags found
1 merge request!318add purge policy buttons to Filter page
Pipeline #55152 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