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' %}
+            &nbsp;<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>&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' 'defining' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> defining</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' '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' 'processed' %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-sync-alt"></i> processed</a>&nbsp;
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>&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;
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