From 0f870d33b36b43a0910988e2cb23af555533d4bf Mon Sep 17 00:00:00 2001
From: Mario Raciti <mario.raciti@inaf.it>
Date: Thu, 22 Apr 2021 15:43:51 +0200
Subject: [PATCH] TMSS-736: Add Metadata class skeleton for filtering and
 ordering in OPTIONS

---
 .../src/tmss/tmssapp/viewsets/CMakeLists.txt      |  1 +
 .../src/tmss/tmssapp/viewsets/lofar_viewset.py    |  3 +++
 .../backend/src/tmss/tmssapp/viewsets/metadata.py | 15 +++++++++++++++
 3 files changed, 19 insertions(+)
 create mode 100644 SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/CMakeLists.txt b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/CMakeLists.txt
index ab71ce95fb8..a65f9b06e65 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/CMakeLists.txt
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/CMakeLists.txt
@@ -4,6 +4,7 @@ include(PythonInstall)
 set(_py_files
     __init__.py
     lofar_viewset.py
+    metadata.py
     specification.py
     scheduling.py
     permissions.py
diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/lofar_viewset.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/lofar_viewset.py
index 86631f7c703..f3b050eed85 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/lofar_viewset.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/lofar_viewset.py
@@ -17,6 +17,7 @@ from django.http import JsonResponse
 from django.urls import reverse as revese_url
 from rest_framework.decorators import action
 from lofar.common import json_utils
+from lofar.sas.tmss.tmss.tmssapp.viewsets.metadata import LOFARDefaultMetadata
 from lofar.sas.tmss.tmss.tmssapp.viewsets.permissions import TMSSPermissions, IsProjectMemberFilterBackend
 from lofar.sas.tmss.tmss.tmssapp.models import permissions
 from django_filters.rest_framework import DjangoFilterBackend, FilterSet, CharFilter
@@ -25,6 +26,7 @@ from rest_framework.filters import OrderingFilter
 from django.contrib.postgres.fields import JSONField, ArrayField
 from copy import deepcopy
 
+
 class LOFARDefaultFilterSet(FilterSet):
     FILTER_DEFAULTS = deepcopy(filterset.FILTER_FOR_DBFIELD_DEFAULTS)
     FILTER_DEFAULTS.update({
@@ -48,6 +50,7 @@ class LOFARViewSet(viewsets.ModelViewSet):
     the `format=None` keyword argument for each action.
     """
     permission_classes = (TMSSPermissions,)
+    metadata_class = LOFARDefaultMetadata
     filter_backends = (LOFARFilterBackend, OrderingFilter, IsProjectMemberFilterBackend,)
     filter_fields = '__all__'
 
diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py
new file mode 100644
index 00000000000..dce59a925c4
--- /dev/null
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/metadata.py
@@ -0,0 +1,15 @@
+from rest_framework.metadata import SimpleMetadata
+
+import logging
+logger = logging.getLogger(__name__)
+
+
+class LOFARDefaultMetadata(SimpleMetadata):
+    """
+    Metadata class to include filtering and ordering info for `OPTIONS` requests.
+    """
+    def determine_metadata(self, request, view):
+        metadata = super(LOFARDefaultMetadata, self).determine_metadata(request, view)
+        # TODO: Add filtering and ordering information.
+
+        return metadata
-- 
GitLab