From 39923ea2ba72454c8c6d23fe6b198b2946d0351a Mon Sep 17 00:00:00 2001 From: Mario Raciti <mario.raciti@inaf.it> Date: Thu, 25 Mar 2021 17:58:14 +0100 Subject: [PATCH] TMSS-692: Add reports.py; refactoring --- .../src/tmss/tmssapp/adapters/CMakeLists.txt | 1 + .../src/tmss/tmssapp/adapters/reports.py | 21 +++++++++++++++++++ .../tmss/tmssapp/viewsets/specification.py | 12 +++-------- 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/CMakeLists.txt index 457bdbabeb7..d3438271ca5 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 00000000000..7c2d2c11f6e --- /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 bca693a80a0..84a9df91c6e 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) -- GitLab