From 04837e7449bacfa8f5d590c21a256408085da939 Mon Sep 17 00:00:00 2001 From: mattiagiupponi <51856725+mattiagiupponi@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:54:55 +0200 Subject: [PATCH] Add args and kwargs in resources API (#11459) Co-authored-by: Giovanni Allegri --- geonode/base/api/views.py | 34 +++++++++++++++++----------------- geonode/documents/api/views.py | 2 +- geonode/layers/api/views.py | 10 +++++----- geonode/maps/api/views.py | 4 ++-- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/geonode/base/api/views.py b/geonode/base/api/views.py index ae81b395883..fbbd2faec29 100644 --- a/geonode/base/api/views.py +++ b/geonode/base/api/views.py @@ -378,7 +378,7 @@ def _filtered(self, request, filter): description="API endpoint allowing to retrieve the approved Resources.", ) @action(detail=False, methods=["get"]) - def approved(self, request): + def approved(self, request, *args, **kwargs): return self._filtered(request, {"is_approved": True}) @extend_schema( @@ -387,7 +387,7 @@ def approved(self, request): description="API endpoint allowing to retrieve the published Resources.", ) @action(detail=False, methods=["get"]) - def published(self, request): + def published(self, request, *args, **kwargs): return self._filtered(request, {"is_published": True}) @extend_schema( @@ -396,7 +396,7 @@ def published(self, request): description="API endpoint allowing to retrieve the featured Resources.", ) @action(detail=False, methods=["get"]) - def featured(self, request): + def featured(self, request, *args, **kwargs): return self._filtered(request, {"featured": True}) @extend_schema( @@ -411,7 +411,7 @@ def featured(self, request): IsAuthenticated, ], ) - def favorites(self, request, pk=None): + def favorites(self, request, pk=None, *args, **kwargs): paginator = GeoNodeApiPagination() paginator.page_size = request.GET.get("page_size", 10) favorites = Favorite.objects.favorites_for_user(user=request.user) @@ -425,7 +425,7 @@ def favorites(self, request, pk=None): description="API endpoint allowing to retrieve the favorite Resources.", ) @action(detail=True, methods=["post", "delete"], permission_classes=[IsAuthenticated]) - def favorite(self, request, pk=None): + def favorite(self, request, pk=None, *args, **kwargs): resource = self.get_object() user = request.user @@ -476,7 +476,7 @@ def favorite(self, request, pk=None): """, ) @action(detail=False, methods=["get"]) - def resource_types(self, request): + def resource_types(self, request, *args, **kwargs): def _to_compact_perms_list( allowed_perms: dict, resource_type: str, resource_subtype: str, compact_perms_labels: dict = {} ) -> list: @@ -583,7 +583,7 @@ def _to_compact_perms_list( methods=["get", "put", "patch", "delete"], permission_classes=[IsAuthenticated], ) - def resource_service_permissions(self, request, pk): + def resource_service_permissions(self, request, pk, *args, **kwargs): """Instructs the Async dispatcher to execute a 'DELETE' or 'UPDATE' on the permissions of a valid 'uuid' - GET input_params: { @@ -720,7 +720,7 @@ def resource_service_permissions(self, request, pk): methods=["post"], permission_classes=[IsAuthenticated, UserHasPerms(perms_dict={"default": {"POST": ["base.add_resourcebase"]}})], ) - def set_thumbnail_from_bbox(self, request, resource_id): + def set_thumbnail_from_bbox(self, request, resource_id, *args, **kwargs): import traceback from django.utils.datastructures import MultiValueDictKeyError @@ -778,7 +778,7 @@ def set_thumbnail_from_bbox(self, request, resource_id): methods=["post"], permission_classes=[IsAuthenticated], ) - def resource_service_ingest(self, request, resource_type: str = None): + def resource_service_ingest(self, request, resource_type: str = None, *args, **kwargs): """Instructs the Async dispatcher to execute a 'INGEST' operation - POST input_params: { @@ -879,7 +879,7 @@ def resource_service_ingest(self, request, resource_type: str = None): methods=["post"], permission_classes=[IsAuthenticated, UserHasPerms(perms_dict={"default": {"POST": ["base.add_resourcebase"]}})], ) - def resource_service_create(self, request, resource_type: str = None): + def resource_service_create(self, request, resource_type: str = None, *args, **kwargs): """Instructs the Async dispatcher to execute a 'CREATE' operation **WARNING**: This will create an empty dataset; if you need to upload a resource to GeoNode, consider using the endpoint "ingest" instead @@ -981,7 +981,7 @@ def resource_service_create(self, request, resource_type: str = None): methods=["delete"], permission_classes=[IsAuthenticated, UserHasPerms], ) - def resource_service_delete(self, request, pk): + def resource_service_delete(self, request, pk, *args, **kwargs): """Instructs the Async dispatcher to execute a 'DELETE' operation over a valid 'uuid' - DELETE input_params: { @@ -1065,7 +1065,7 @@ def resource_service_delete(self, request, pk): methods=["put"], permission_classes=[IsAuthenticated, UserHasPerms], ) - def resource_service_update(self, request, pk): + def resource_service_update(self, request, pk, *args, **kwargs): """Instructs the Async dispatcher to execute a 'UPDATE' operation over a valid 'uuid' - PUT input_params: { @@ -1195,7 +1195,7 @@ def resource_service_update(self, request, pk): ), ], ) - def resource_service_copy(self, request, pk): + def resource_service_copy(self, request, pk, *args, **kwargs): """Instructs the Async dispatcher to execute a 'COPY' operation over a valid 'pk' - PUT input_params: { @@ -1300,7 +1300,7 @@ def resource_service_copy(self, request, pk): UserHasPerms(perms_dict={"default": {"POST": ["base.add_resourcebase"]}}), ], ) - def ratings(self, request, pk): + def ratings(self, request, pk, *args, **kwargs): resource = get_object_or_404(ResourceBase, pk=pk) resource = resource.get_real_instance() ct = ContentType.objects.get_for_model(resource) @@ -1337,7 +1337,7 @@ def ratings(self, request, pk): permission_classes=[IsAuthenticated, UserHasPerms], parser_classes=[JSONParser, MultiPartParser], ) - def set_thumbnail(self, request, pk): + def set_thumbnail(self, request, pk, *args, **kwargs): resource = get_object_or_404(ResourceBase, pk=pk) if not request.data.get("file"): @@ -1397,7 +1397,7 @@ def set_thumbnail(self, request, pk): url_path=r"extra_metadata", # noqa url_name="extra-metadata", ) - def extra_metadata(self, request, pk): + def extra_metadata(self, request, pk, *args, **kwargs): _obj = get_object_or_404(ResourceBase, pk=pk) if request.method == "GET": @@ -1488,7 +1488,7 @@ def _get_request_params(self, request, encode=False): url_path=r"linked_resources", # noqa url_name="linked_resources", ) - def linked_resources(self, request, pk): + def linked_resources(self, request, pk, *args, **kwargs): try: """ To let the API be able to filter the linked result, we cannot rely on the DynamicFilterBackend diff --git a/geonode/documents/api/views.py b/geonode/documents/api/views.py index 720cb7639ba..dd15a23e363 100644 --- a/geonode/documents/api/views.py +++ b/geonode/documents/api/views.py @@ -145,7 +145,7 @@ def perform_create(self, serializer): description="API endpoint allowing to retrieve the DocumentResourceLink(s).", ) @action(detail=True, methods=["get"]) - def linked_resources(self, request, pk=None): + def linked_resources(self, request, pk=None, *args, **kwargs): document = self.get_object() resources_id = document.links.all().values("object_id") resources = ResourceBase.objects.filter(id__in=resources_id) diff --git a/geonode/layers/api/views.py b/geonode/layers/api/views.py index 3ad985c7781..218216a17bd 100644 --- a/geonode/layers/api/views.py +++ b/geonode/layers/api/views.py @@ -100,7 +100,7 @@ def get_serializer_class(self): UserHasPerms(perms_dict={"default": {"PUT": ["base.change_resourcebase_metadata"]}}), ], ) - def metadata(self, request, pk=None): + def metadata(self, request, pk=None, *args, **kwargs): """ Endpoint to upload ISO metadata Usage Example: @@ -165,7 +165,7 @@ def metadata(self, request, pk=None): description="API endpoint allowing to retrieve the MapLayers list.", ) @action(detail=True, methods=["get"]) - def maplayers(self, request, pk=None): + def maplayers(self, request, pk=None, *args, **kwargs): dataset = self.get_object() resources = dataset.maplayers return Response(SimpleMapLayerSerializer(many=True).to_representation(resources)) @@ -176,7 +176,7 @@ def maplayers(self, request, pk=None): description="API endpoint allowing to retrieve maps using the dataset.", ) @action(detail=True, methods=["get"]) - def maps(self, request, pk=None): + def maps(self, request, pk=None, *args, **kwargs): dataset = self.get_object() resources = dataset.maps return Response(SimpleMapSerializer(many=True).to_representation(resources)) @@ -208,7 +208,7 @@ def maps(self, request, pk=None): methods=["patch"], serializer_class=DatasetReplaceAppendSerializer, ) - def replace(self, request, dataset_id=None): + def replace(self, request, dataset_id=None, *args, **kwargs): """ Edpoint for replace data to an existing layer """ @@ -241,7 +241,7 @@ def replace(self, request, dataset_id=None): methods=["patch"], serializer_class=DatasetReplaceAppendSerializer, ) - def append(self, request, dataset_id=None): + def append(self, request, dataset_id=None, *args, **kwargs): """ Edpoint for replace data to an existing layer """ diff --git a/geonode/maps/api/views.py b/geonode/maps/api/views.py index ae127f8fffb..aec88e47fbe 100644 --- a/geonode/maps/api/views.py +++ b/geonode/maps/api/views.py @@ -96,7 +96,7 @@ def create(self, request, *args, **kwargs): description="API endpoint allowing to retrieve the MapLayers list.", ) @action(detail=True, methods=["get"]) - def maplayers(self, request, pk=None): + def maplayers(self, request, pk=None, *args, **kwargs): map = self.get_object() resources = map.maplayers return Response(MapLayerSerializer(embed=True, many=True).to_representation(resources)) @@ -107,7 +107,7 @@ def maplayers(self, request, pk=None): description="API endpoint allowing to retrieve the local MapLayers.", ) @action(detail=True, methods=["get"]) - def datasets(self, request, pk=None): + def datasets(self, request, pk=None, *args, **kwargs): map = self.get_object() resources = map.datasets return Response(DatasetSerializer(embed=True, many=True).to_representation(resources))