diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index 9db22fd558ca3819d8400e59f675d37adc89d58c..47e8a14a8393787c73b353a1d71e23bcb035968e 100644 --- a/atdb/taskdatabase/serializers.py +++ b/atdb/taskdatabase/serializers.py @@ -24,7 +24,7 @@ class LogEntrySerializer(serializers.ModelSerializer): fields = "__all__" -class TaskSerializer(serializers.ModelSerializer): +class TaskWriteSerializer(serializers.ModelSerializer): status_history = serializers.StringRelatedField( many=True, @@ -79,6 +79,34 @@ class TaskSerializer(serializers.ModelSerializer): task.save() return task +class TaskReadSerializer(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','filter','predecessor','successors', + 'project','sas_id','priority','purge_policy','resume', + 'workflow', + 'stage_request_id', + 'status','new_status', + 'inputs','outputs','metrics','status_history', + 'log_entries' + ) + class StatusSerializer(serializers.ModelSerializer): diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index bc40666a8d4f696384d8594a2af90b82490e3bf5..7be4eb6e218a113fae84372b0de228da9c3c13d2 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -44,7 +44,7 @@ </div> {% include 'taskdatabase/pagination.html' %} </div> - <p class="footer"> Version 1.0.0 (1 feb 2021 - 17:00) + <p class="footer"> Version 1.0.0 (2 feb 2021 - 7:00) <script type="text/javascript"> (function(seconds) { var refresh, diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 60948650c16c0a8241064a37995c97ba2749af99..c913519aa2c6e399926682abc7934f28180ba6a2 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -14,7 +14,7 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from .models import Task, Status, Workflow, LogEntry from django.db.models import Q -from .serializers import TaskSerializer, WorkflowSerializer, LogEntrySerializer +from .serializers import TaskWriteSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer from .forms import FilterForm from .services import algorithms @@ -132,12 +132,17 @@ class TaskListViewAPI(generics.ListCreateAPIView): """ model = Task queryset = Task.objects.all() - serializer_class = TaskSerializer + #serializer_class = TaskSerializer # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html filter_backends = (filters.DjangoFilterBackend,) filter_class = TaskFilter + def get_serializer_class(self): + if self.request.method in ['GET']: + return TaskReadSerializer + else: + return TaskWriteSerializer # example: /atdb/tasks/5/ # calling this view serializes a task in the REST API @@ -147,8 +152,13 @@ class TaskDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView): """ model = Task queryset = Task.objects.all() - serializer_class = TaskSerializer + # serializer_class = TaskSerializer + def get_serializer_class(self): + if self.request.method in ['GET']: + return TaskReadSerializer + else: + return TaskWriteSerializer # example: /atdb/workflows/ class WorkflowListViewAPI(generics.ListCreateAPIView):