diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index ad672958f9b81123bb87b558a835e7934e167d8a..e52e9478e0ddd26c13d8790770652b4f3aefa37a 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -38,6 +38,11 @@ class Task(models.Model): outputs = models.JSONField(null=True, blank=True) metrics = models.JSONField(null=True, blank=True) + size_to_process = models.IntegerField(null=True) + size_processed = models.IntegerField(null=True) + total_processing_time = models.IntegerField(null=True) + + # relationships workflow = models.ForeignKey(Workflow, related_name='tasks', on_delete=models.SET_NULL, null=True, blank=True) predecessor = models.ForeignKey('self', related_name='successors', on_delete=models.SET_NULL, null=True, blank=True) diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py index c4a434dfc8316096e22d4bcd5930782f6004245a..76f98a9077f23a80b1b1896a6c30df0f99c54b9b 100644 --- a/atdb/taskdatabase/services/algorithms.py +++ b/atdb/taskdatabase/services/algorithms.py @@ -4,8 +4,8 @@ Date created: 2019-04-04 Description: Business logic for ATDB. These functions are called from the views (views.py). """ -import time -import datetime + +from django.db.models import Sum import logging from .common import timeit from ..models import Task @@ -27,7 +27,12 @@ def get_size(status_list): logger.info("get_size("+status_list+")") #todo: implement - return -1 + query = field + '__sum' + sum_value = Task.objects.filter(status__in=status_list).aggregate(Sum(field))[query] + if sum_value == None: + sum_value = 0.0 + return sum_value + diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index 7be4eb6e218a113fae84372b0de228da9c3c13d2..44627b0f0ea9cbf222e188e8abb07cdb235bc621 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -25,7 +25,7 @@ <th>Created</th> <th>Size</th> - <th>Actions</th> + <th>Set Status</th> </tr> </thead> <tbody> diff --git a/atdb/taskdatabase/templates/taskdatabase/tasks.html b/atdb/taskdatabase/templates/taskdatabase/tasks.html index 05466f33f0407b6dd769c00b5d6540ceace9181a..871913307a1cbbb65e29fa160b6578c32b3c0555 100644 --- a/atdb/taskdatabase/templates/taskdatabase/tasks.html +++ b/atdb/taskdatabase/templates/taskdatabase/tasks.html @@ -19,44 +19,19 @@ <td> {% if task.status == "defining" %} - <a href="{% url 'task-setstatus-view' task.pk 'defined' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Stage</a> + <a href="{% url 'task-setstatus-view' task.pk 'defined' my_tasks.number %}" class="btn btn-success btn-sm" role="button">Stage</a> {% endif %} - {% if task.status == "defined" or task.status == "staging" or task.status == "staged" %} + {% if task.status != "defining" %} <a href="{% url 'task-setstatus-view' task.pk 'defining' my_tasks.number %}" class="btn btn-warning btn-sm" role="button">Reset</a> {% endif %} - {% if task.status == "submitted" or task.status == "submitting" %} - <a href="{% url 'task-setstatus-view' task.pk 'defined' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Stage</a> - {% endif %} - - {% if task.status == "completed" or task.status == "incomplete" %} - <a href="{% url 'task-setstatus-view' task.pk 'valid' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Ready to Ingest</a> - {% endif %} + <a href="{% url 'task-setstatus-view' task.pk 'staged' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">staged</a> + <a href="{% url 'task-setstatus-view' task.pk 'processed' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">processed</a> + <a href="{% url 'task-setstatus-view' task.pk 'validated' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">validated</a> + <a href="{% url 'task-setstatus-view' task.pk 'ingested' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">ingested</a> - {% if task.status == "error (no completing)" or task.status == "defined" %} - <a href="{% url 'task-setstatus-view' task.pk 'completing' my_tasks.number %}" class="btn btn-success btn-sm" role="button">Completing</a> - {% endif %} - - {% if task.status == "valid" %} - <a href="{% url 'task-setstatus-view' task.pk 'valid_priority' my_tasks.number %}" class="btn btn-warning btn-sm" role="button">Priority Ingest</a> - <a href="{% url 'task-setstatus-view' task.pk 'completed' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Cancel Ingest</a> - {% endif %} - {% if task.status == "valid_priority" %} - <a href="{% url 'task-setstatus-view' task.pk 'valid' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Cancel Priority</a> - <a href="{% url 'task-setstatus-view' task.pk 'completed' my_tasks.number %}" class="btn btn-primary btn-sm" role="button">Cancel Ingest</a> - {% endif %} - - {% if task.status == "archived" %} - <a href="{% url 'task-setquality-view' task.pk 'data_is_good' my_tasks.number %}" class="btn btn-success btn-sm" role="button">Data is Good</a> - <a href="{% url 'task-setquality-view' task.pk 'data_is_bad' my_tasks.number %}" class="btn btn-danger btn-sm" role="button">Data is Bad</a> - {% endif %} - - {% if task.status == "removed" and task.quality == "unknown" %} - <a href="{% url 'task-setquality-view' task.pk 'data_is_good' my_tasks.number %}" class="btn btn-success btn-sm" role="button">Data is Good</a> - <a href="{% url 'task-setquality-view' task.pk 'data_is_bad' my_tasks.number %}" class="btn btn-danger btn-sm" role="button">Data is Bad</a> - {% endif %} </td> </tr>