diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index a200d6b9761c76c5a0bab08cd30eadee7a28682d..fe2de6ec05952854ca15e2b861e962c5c09268ac 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 17f61ad86899c2e374846f2c4efb532c3d1cb59b..1e664eb3a9c1b9563d560a6437295dba8e89a85e 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 e14448fb7b9470d7e4ca8ac1f5596f8ea3c5c183..03fb3e1823929ade58300cfeb799cde204d41103 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 ad82c2ee4422f78b45c7f5b9a35a5fcd5eeda2ad..b638521d123bd8c19caa88775ab4698de436e64b 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):