diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt index 457bdbabeb7c04db158abe1c7a6a6a9b0f5dd90e..d3438271ca516b706d2d6f687b7ec6db2db2253d 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt @@ -5,6 +5,7 @@ set(_py_files parset.py sip.py feedback.py + reports.py ) python_install(${_py_files} diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py new file mode 100644 index 0000000000000000000000000000000000000000..7c2d2c11f6ec78d7841ade63ee3df70efb0dd809 --- /dev/null +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -0,0 +1,21 @@ +from lofar.sas.tmss.tmss.tmssapp import models +from lofar.sas.tmss.tmss.tmssapp import serializers + +from rest_framework.request import Request + +import logging +logger = logging.getLogger(__name__) + + +def create_project_report(request: Request, project: models.Project) -> {}: + # TODO: Retrieve the information needed, all in one go. + project_pk = project.pk + result = {'project': project_pk} # Object to be returned + + # Add project_quota to result + # TODO: Do we also need quota's id? + project_quota = models.ProjectQuota.objects.get(project=project_pk) + project_quota_data = serializers.ProjectQuotaSerializer(project_quota, context={'request': request}).data + result['quota'] = [{k: project_quota_data[k] for k in ('resource_type_id', 'value')}, ] + + return result diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py index bca693a80a0719d0ae487f3d002a57c43af16827..84a9df91c6ee8cf862748d031ca5105b1cdeb906 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py @@ -22,6 +22,7 @@ from drf_yasg.openapi import Parameter from lofar.sas.tmss.tmss.tmssapp.viewsets.lofar_viewset import LOFARViewSet, LOFARNestedViewSet, AbstractTemplateViewSet, LOFARCopyViewSet from lofar.sas.tmss.tmss.tmssapp import models from lofar.sas.tmss.tmss.tmssapp import serializers +from lofar.sas.tmss.tmss.tmssapp.adapters.reports import create_project_report from django.http import JsonResponse from datetime import datetime @@ -354,15 +355,8 @@ class ProjectViewSet(LOFARViewSet): @action(methods=['get'], detail=True, url_name="report", name="Get Report") def report(self, request, pk=None): # TODO: Discuss about the endpoint choose. ATM is /project/<project-name>/report - # TODO: Decide how to retrieve the information needed: recipe of existing APIs or all in one go. - - result = {} # Object to be returned - result['project_id'] = pk - - project_quota = models.ProjectQuota.objects.get(project=pk) - project_quota_data = serializers.ProjectQuotaSerializer(project_quota, context={'request': request}).data - result['quota'] = project_quota_data - + project = get_object_or_404(models.Project, pk=pk) + result = create_project_report(request, project) return Response(result, status=status.HTTP_200_OK)