From 9b22f8b66d93bea152d5c8ae21f2101431262114 Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Fri, 26 Mar 2021 19:49:17 +0100 Subject: [PATCH] adding tasks-fast endpoint --- atdb/taskdatabase/serializers.py | 36 +++++++++++++++++-- .../templates/taskdatabase/index.html | 2 +- atdb/taskdatabase/urls.py | 1 + atdb/taskdatabase/views.py | 15 ++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index a200d6b9..fe2de6ec 100644 --- a/atdb/taskdatabase/serializers.py +++ b/atdb/taskdatabase/serializers.py @@ -92,7 +92,7 @@ class TaskReadSerializer(serializers.ModelSerializer): class Meta: model = Task - fields = ('id','task_type','creationTime','filter','predecessor','successors', + fields = ['id','task_type','creationTime','filter','predecessor','successors', 'project','sas_id','priority','purge_policy','resume', 'workflow', 'stage_request_id', @@ -100,7 +100,39 @@ class TaskReadSerializer(serializers.ModelSerializer): 'inputs','outputs','metrics','status_history', 'size_to_process', 'size_processed', 'total_processing_time', 'log_entries' - ) + ] + read_only_fields = fields + + +class TaskReadSerializerFast(serializers.ModelSerializer): + """ + status_history = serializers.StringRelatedField( + many=True, + required=False, + ) + + log_entries = serializers.StringRelatedField( + many=True, + required=False + ) + + successors = serializers.StringRelatedField( + many=True, + required=False, + ) + """ + class Meta: + model = Task + fields = ['id','task_type','creationTime','filter','predecessor', + 'project','sas_id','priority','purge_policy','resume', + 'workflow', + 'stage_request_id', + 'status','new_status', + 'inputs','outputs','metrics', + 'size_to_process', 'size_processed', 'total_processing_time', + + ] + read_only_fields = fields class StatusSerializer(serializers.ModelSerializer): diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index 17f61ad8..1e664eb3 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 (25 mar 2021 - 18:00) + <p class="footer"> Version 1.0.0 (26 mar 2021 - 19:00) </div> diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index e14448fb..03fb3e18 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -31,6 +31,7 @@ urlpatterns = [ # --- REST API --- path('tasks/', views.TaskListViewAPI.as_view(), name='tasks-api'), path('tasks/<int:pk>/', views.TaskDetailsViewAPI.as_view(), name='task-detail-view-api'), + path('tasks-fast/', views.TaskListViewAPIFast.as_view(), name='tasks-api-fast'), path('workflows/', views.WorkflowListViewAPI.as_view(), name='workflows-api'), path('workflows/<int:pk>/', views.WorkflowDetailsViewAPI.as_view(), name='workflow-detail-view-api'), diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index ad82c2ee..b638521d 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -30,6 +30,7 @@ from django.db.models import Q from .serializers import \ TaskWriteSerializer, \ TaskReadSerializer, \ + TaskReadSerializerFast, \ WorkflowSerializer,\ LogEntrySerializer,\ ConfigurationSerializer @@ -312,6 +313,20 @@ class TaskListViewAPI(generics.ListCreateAPIView): else: return TaskWriteSerializer + +class TaskListViewAPIFast(generics.ListAPIView): + """ + A pagination list of tasks, unsorted. + """ + model = Task + queryset = Task.objects.all().order_by('-priority','id') + serializer_class = TaskReadSerializerFast + + # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html + filter_backends = (filters.DjangoFilterBackend,) + filter_class = TaskFilter + + # example: /atdb/tasks/5/ # calling this view serializes a task in the REST API class TaskDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView): -- GitLab