From 32c11508f274e8778e956ec256dab719fc64ae1d Mon Sep 17 00:00:00 2001
From: Nico Vermaas <vermaas@astron.nl>
Date: Thu, 21 Jan 2021 15:59:44 +0100
Subject: [PATCH] add log_entries to task serializer

---
 atdb/taskdatabase/models.py                   |  5 +++--
 atdb/taskdatabase/serializers.py              | 22 ++++++++++++++-----
 .../templates/taskdatabase/index.html         |  6 +++--
 .../templates/taskdatabase/tasks.html         | 17 +++++---------
 atdb/taskdatabase/views.py                    |  2 +-
 5 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 6bd4778e..ddf22e8b 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -56,7 +56,7 @@ class Task(models.Model):
 
 
 class LogEntry(models.Model):
-    task = models.ForeignKey(Task, related_name='tasks', on_delete=models.CASCADE, null=False)
+    task = models.ForeignKey(Task, related_name='log_entries', on_delete=models.CASCADE, null=False)
     cpu_cycles = models.IntegerField(null=True,blank=True)
     wall_clock_time = models.IntegerField(null=True,blank=True)
     url_to_log_file = models.CharField(max_length=100, blank=True, null=True)
@@ -66,7 +66,8 @@ class LogEntry(models.Model):
     status = models.CharField(max_length=50,default="defined", blank=True, null=True)
 
     def __str__(self):
-        return str(self.id)+' - ('+str(self.task__taskID)+')'
+        return str(self.id)+' - ('+str(self.task)+')'
+
 
 class Status(models.Model):
     name = models.CharField(max_length=50, default="unknown")
diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index 670ef18b..5a2ffc66 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -17,6 +17,13 @@ class WorkflowSerializer(serializers.ModelSerializer):
         fields = "__all__"
 
 
+class LogEntrySerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = LogEntry
+        fields = "__all__"
+
+
 class TaskSerializer(serializers.ModelSerializer):
 
     status_history = serializers.StringRelatedField(
@@ -24,6 +31,12 @@ class TaskSerializer(serializers.ModelSerializer):
         required=False,
     )
 
+    log_entries = serializers.StringRelatedField(
+        many=True,
+        required=False
+    )
+
+
     class Meta:
         model = Task
         fields = ('id','task_type','taskID',
@@ -32,7 +45,9 @@ class TaskSerializer(serializers.ModelSerializer):
                   'new_workflow_id','new_workflow_uri','workflow',
                   'stage_request_id',
                   'status','new_status',
-                  'inputs','outputs','status_history',)
+                  'inputs','outputs','status_history',
+                  'log_entries'
+                  )
 
 
 class StatusSerializer(serializers.ModelSerializer):
@@ -54,8 +69,3 @@ class WorkflowSerializer(serializers.ModelSerializer):
         fields = "__all__"
 
 
-class LogEntrySerializer(serializers.ModelSerializer):
-
-    class Meta:
-        model = LogEntry
-        fields = "__all__"
\ No newline at end of file
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index 158027fc..9e4e353c 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -18,10 +18,12 @@
                     <thead>
                     <tr>
                         <th width="5%">TaskID</th>
+                        <th>Status</th>
                         <th width="3%">task_type</th>
+
                         <th>Project</th>
-                        <th>Workflow</th>
-                        <th>Status</th>
+                        <th width="15%">Workflow</th>
+
                         <th>Created</th>
 
                         <th>Size</th>
diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks.html b/atdb/taskdatabase/templates/taskdatabase/tasks.html
index 132285ae..89ac9f35 100644
--- a/atdb/taskdatabase/templates/taskdatabase/tasks.html
+++ b/atdb/taskdatabase/templates/taskdatabase/tasks.html
@@ -8,14 +8,12 @@
             <td>
                 <a href="{{ task.get_absolute_url }}" target="_blank">{{ task.taskID }} </a>
             </td>
-
-            <td>
-                {{ task.task_type }}
-            </td>
+            <td>{{ task.status }}</td>
+            <td>{{ task.task_type }}</td>
 
             <td>{{ task.project }}</td>
             <td>{{ task.workflow }}
-            <td>{{ task.status }}</td>
+
             <td>{{ task.creationTime|date:"Y-m-d H:i:s" }} </td>
             <td>{{ task.size|filesizeformat }} </td>
             </td>
@@ -23,14 +21,11 @@
             <td>
 
                 {% if task.status == "defined" %}
-                    <a href="{% url 'task-setstatus-view' task.pk 'scheduled' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Schedule</a>
+                    <a href="{% url 'task-setstatus-view' task.pk 'defining' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">To Defining</a>
                 {% endif %}
 
-                {% if task.status == "scheduled" %}
-                    <a href="{% url 'task-setstatus-view' task.pk 'defined' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Unschedule</a>
-                    {% if not task.skip_auto_ingest %}
-                       <a href="{% url 'task-skipautoingest-view' task.pk 'true' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Skip Ingest</a>
-                    {% endif %}
+                {% if task.status == "submitted" %}
+                    <a href="{% url 'task-setstatus-view' task.pk 'defined' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">To Defined</a>
                 {% endif %}
 
                 {% if task.status == "completed" or task.status == "incomplete" %}
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 721016e9..4d6eadca 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -174,7 +174,7 @@ class LogEntryListViewAPI(generics.ListCreateAPIView):
     serializer_class = LogEntrySerializer
 
     filter_backends = (filters.DjangoFilterBackend,)
-    filter_class = WorkflowFilter
+    filter_class = LogEntryFilter
 
 
 # example: /atdb/workflows/5/
-- 
GitLab