From 67f54e224231a682014101d0bf78dc8ff7dba19b Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Mon, 26 Apr 2021 09:54:48 +0200 Subject: [PATCH] Query Page: add 'resume' filter (hold/start) removed 'defining' filters added nicer 'Filter' button --- atdb/taskdatabase/models.py | 4 +-- atdb/taskdatabase/tables.py | 28 ++++--------------- atdb/taskdatabase/templates/query/index.html | 3 +- atdb/taskdatabase/templates/query/query.html | 2 +- .../query/set_multi_status_panel.html | 3 +- .../query/status_buttons_per_row.html | 1 - .../templates/taskdatabase/index.html | 2 +- atdb/taskdatabase/views.py | 4 +++ 8 files changed, 17 insertions(+), 30 deletions(-) diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 653bc098..8e305b9c 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -25,7 +25,7 @@ class Task(models.Model): new_status = models.CharField(max_length=50, default="defining", null=True) status = models.CharField(db_index=True, default="unknown", max_length=50,blank=True, null=True) - resume = models.BooleanField(default=True) + resume = models.BooleanField(verbose_name="Resume", default=True) creationTime = models.DateTimeField(verbose_name="CreationTime",default=datetime.utcnow, blank=True) priority = models.IntegerField(default=100, null=True) @@ -34,7 +34,7 @@ class Task(models.Model): # LOFAR properties project = models.CharField(max_length=100, blank=True, null=True, default="unknown") - sas_id = models.CharField(max_length=15, blank=True, null=True) + sas_id = models.CharField(verbose_name="SAS_ID",max_length=15, blank=True, null=True) inputs = models.JSONField(null=True, blank=True) outputs = models.JSONField(null=True, blank=True) metrics = models.JSONField(null=True, blank=True) diff --git a/atdb/taskdatabase/tables.py b/atdb/taskdatabase/tables.py index 8ef57446..b096adb1 100644 --- a/atdb/taskdatabase/tables.py +++ b/atdb/taskdatabase/tables.py @@ -2,24 +2,6 @@ import django_tables2 as tables from .models import Task -# render the StatusColumn based on the style.css -class IDColumn(tables.Column): - attrs = { - "td": { - "class": lambda record: record.status - }, - "tr": { - "class": lambda record: record.status - }, - "a": { - "href" : lambda record: record.get_absolute_url, - "target": "_blank" - } - } - def render(self, record): - link = '<a href="{{ record.get_absolute_url }}" target="_blank">{{ record.id }} </a>' - return "{}".format(link) - # render the StatusColumn based on the style.css class StatusColumn(tables.Column): attrs = { @@ -33,19 +15,21 @@ class StatusColumn(tables.Column): def render(self, record): return "{}".format(record.status) +# render the StatusColumn based on the style.css +class ResumeColumn(tables.BooleanColumn): + def render(self, record): + return record.resume class TaskTable(tables.Table): class Meta: model = Task template_name = "django_tables2/bootstrap4.html" - fields = ("id", "workflow","filter","priority","status","project","sas_id","actions","buttons") + fields = ("id", "workflow","filter","priority","status","project","sas_id","resume","actions","buttons") # columns that need specific rendering - # id = IDColumn() (too complicated, finish later.. if time status = StatusColumn() - - #creationtime = tables.Column(verbose_name='CreationTime') + #resume = ResumeColumn() actions = tables.TemplateColumn(verbose_name='Details', template_name='query/action_buttons_per_row.html', diff --git a/atdb/taskdatabase/templates/query/index.html b/atdb/taskdatabase/templates/query/index.html index 508b6eaf..8bff93a4 100644 --- a/atdb/taskdatabase/templates/query/index.html +++ b/atdb/taskdatabase/templates/query/index.html @@ -14,7 +14,8 @@ <div class="card"> <form action="" method="get" class="form form-inline"> {% bootstrap_form filter.form layout='inline' %} - {% bootstrap_button 'filter' %} + <button type="submit" class="btn-success btn-sm" title="Filter"><i class="fas fa-filter"></i> Filter</button> + </form> </div> {% endif %} diff --git a/atdb/taskdatabase/templates/query/query.html b/atdb/taskdatabase/templates/query/query.html index e2455f67..3bc2ad1d 100644 --- a/atdb/taskdatabase/templates/query/query.html +++ b/atdb/taskdatabase/templates/query/query.html @@ -2,7 +2,7 @@ <!doctype html> <html> <head> - <title>ATDB Tables2</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 5a3a8a39..2d586db2 100644 --- a/atdb/taskdatabase/templates/query/set_multi_status_panel.html +++ b/atdb/taskdatabase/templates/query/set_multi_status_panel.html @@ -5,13 +5,12 @@ <div class="card-body"> {% if user.is_superuser %} - <p>Click to change Status for all these tasks</p> + <p>Click to 'multi change' Status for all these tasks</p> <table> <tr> <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' 'defining' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defining</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> diff --git a/atdb/taskdatabase/templates/query/status_buttons_per_row.html b/atdb/taskdatabase/templates/query/status_buttons_per_row.html index c0d9286d..f5541daf 100644 --- a/atdb/taskdatabase/templates/query/status_buttons_per_row.html +++ b/atdb/taskdatabase/templates/query/status_buttons_per_row.html @@ -1,6 +1,5 @@ {% if user.is_staff %} - <a href="{% url 'task-setstatus' record.pk 'defining' '1' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-undo"></i> defining</a> <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> diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index 659e29d3..f4f48751 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 (23 apr 2021 - 9:00) + <p class="footer"> Version 1.0.0 (26 apr 2021 - 9:00) </div> diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 57d6d022..41532b78 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -9,6 +9,8 @@ from django.contrib import messages from rest_framework import generics, pagination from rest_framework.response import Response + +import django_filters from django_filters import rest_framework as filters from django_filters.views import FilterView from django_tables2.views import SingleTableMixin @@ -56,6 +58,7 @@ class TaskFilter(filters.FilterSet): } class TaskFilterQueryPage(filters.FilterSet): + resume = django_filters.BooleanFilter(lookup_expr='exact', label='resuming') class Meta: model = Task @@ -68,6 +71,7 @@ class TaskFilterQueryPage(filters.FilterSet): 'status': ['icontains', 'in'], 'project': ['exact', 'icontains'], 'sas_id': ['exact', 'icontains'], + #'resume': ['exact'], } -- GitLab