From 850d23f2c606c32b9e935ca3db228e96edfade1b Mon Sep 17 00:00:00 2001 From: Vermaas <vermaas@astron.nl> Date: Thu, 13 Jul 2023 14:11:16 +0200 Subject: [PATCH] add finished fraction information to failures page --- atdb/taskdatabase/models.py | 23 ++++++++++++++++++- .../taskdatabase/failures/headers.html | 3 +++ .../taskdatabase/failures/tasks.html | 3 ++- atdb/taskdatabase/views.py | 1 - 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 35ac5ff9..e13ffe38 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -30,7 +30,6 @@ class State(Enum): datetime_format_string = '%Y-%m-%dT%H:%M:%SZ' verified_statusses = ['stored','validated','scrubbed','archived','finished','suspended','discarded'] - class Workflow(models.Model): description = models.CharField(max_length=500, blank=True, null=True) tag = models.CharField(max_length=30, blank=True, null=True) @@ -278,6 +277,7 @@ class Task(models.Model): except: return None + @property def path_to_lta(self): try: @@ -292,6 +292,27 @@ class Task(models.Model): return False return True + @property + def sasid_finished_fraction(self): + size_archived = 0 + size_remaining = 0 + total_size = 0 + + tasks = Task.objects.filter(sas_id=self.sas_id) + + for task in tasks: + if task.status == State.FINISHED.value: + size_archived = size_archived + task.size_to_process + else: + size_remaining = size_remaining + task.size_to_process + total_size = total_size + task.size_to_process + + finished = {} + finished['fraction'] = round((size_archived / (size_remaining + size_archived)) * 100) + finished['total_size'] = total_size + finished['remaining'] = size_remaining + return finished + @property def joined_status(self): # if a task has joined_input_tasks, then check their status diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/headers.html b/atdb/taskdatabase/templates/taskdatabase/failures/headers.html index 4e06b0e0..f810f2fa 100644 --- a/atdb/taskdatabase/templates/taskdatabase/failures/headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/failures/headers.html @@ -20,10 +20,13 @@ SAS_ID <a href="{% url 'sort-tasks' 'sas_id' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> </th> + <th> <a href="{% url 'sort-tasks' '-filter' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> Filter <a href="{% url 'sort-tasks' 'filter' 'failures' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> </th> + <th>Finished (SAS_ID)</th> + <th>Remaining (task / sas_id)</th> <th>Actions</th> </tr> \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/failures/tasks.html b/atdb/taskdatabase/templates/taskdatabase/failures/tasks.html index c91d6c0b..8175a58f 100644 --- a/atdb/taskdatabase/templates/taskdatabase/failures/tasks.html +++ b/atdb/taskdatabase/templates/taskdatabase/failures/tasks.html @@ -36,7 +36,8 @@ <td>{{ task.sas_id }}</td> <td>{{ task.filter }} </td> - + <td>{{ task.sasid_finished_fraction.fraction }}% of {{ task.sasid_finished_fraction.total_size|filesizeformat }}</td> + <td>{{ task.size_to_process|filesizeformat }} / {{ task.sasid_finished_fraction.remaining|filesizeformat }}</td> <td> {% include "taskdatabase/failures/retry_buttons.html" %} diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index fd2065c1..84b38dd8 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -1,6 +1,5 @@ import logging import json -from enum import Enum from . import config from django.contrib.auth.decorators import login_required -- GitLab