geonode.base.api.views ====================== .. py:module:: geonode.base.api.views Attributes ---------- .. autoapisummary:: geonode.base.api.views.logger Classes ------- .. autoapisummary:: geonode.base.api.views.UserViewSet geonode.base.api.views.GroupViewSet geonode.base.api.views.RegionViewSet geonode.base.api.views.HierarchicalKeywordViewSet geonode.base.api.views.ThesaurusKeywordViewSet geonode.base.api.views.TopicCategoryViewSet geonode.base.api.views.OwnerViewSet geonode.base.api.views.ResourceBaseViewSet Functions --------- .. autoapisummary:: geonode.base.api.views.base_linked_resources Module Contents --------------- .. py:data:: logger .. py:class:: UserViewSet Bases: :py:obj:`dynamic_rest.viewsets.DynamicModelViewSet` API endpoint that allows users to be viewed or edited. .. py:attribute:: authentication_classes .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:method:: get_queryset() Filters and sorts users. .. py:method:: resources(request, pk=None) .. py:method:: groups(request, pk=None) .. py:class:: GroupViewSet Bases: :py:obj:`dynamic_rest.viewsets.DynamicModelViewSet` API endpoint that allows gropus to be viewed or edited. .. py:attribute:: authentication_classes .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:method:: get_queryset() Filters the public groups and private ones the current user is member of. .. py:method:: members(request, pk=None) .. py:method:: managers(request, pk=None) .. py:method:: resources(request, pk=None) .. py:class:: RegionViewSet Bases: :py:obj:`dynamic_rest.viewsets.WithDynamicViewSetMixin`, :py:obj:`rest_framework.mixins.ListModelMixin`, :py:obj:`rest_framework.mixins.RetrieveModelMixin`, :py:obj:`rest_framework.viewsets.GenericViewSet` API endpoint that lists regions. .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: queryset .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:class:: HierarchicalKeywordViewSet Bases: :py:obj:`dynamic_rest.viewsets.WithDynamicViewSetMixin`, :py:obj:`rest_framework.mixins.ListModelMixin`, :py:obj:`rest_framework.mixins.RetrieveModelMixin`, :py:obj:`rest_framework.viewsets.GenericViewSet` API endpoint that lists hierarchical keywords. .. py:method:: get_queryset() .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:class:: ThesaurusKeywordViewSet Bases: :py:obj:`dynamic_rest.viewsets.WithDynamicViewSetMixin`, :py:obj:`rest_framework.mixins.ListModelMixin`, :py:obj:`rest_framework.mixins.RetrieveModelMixin`, :py:obj:`rest_framework.viewsets.GenericViewSet` API endpoint that lists Thesaurus keywords. .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: queryset .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:class:: TopicCategoryViewSet Bases: :py:obj:`dynamic_rest.viewsets.WithDynamicViewSetMixin`, :py:obj:`rest_framework.mixins.ListModelMixin`, :py:obj:`rest_framework.mixins.RetrieveModelMixin`, :py:obj:`rest_framework.viewsets.GenericViewSet` API endpoint that lists categories. .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: queryset .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:class:: OwnerViewSet Bases: :py:obj:`dynamic_rest.viewsets.WithDynamicViewSetMixin`, :py:obj:`rest_framework.mixins.ListModelMixin`, :py:obj:`rest_framework.mixins.RetrieveModelMixin`, :py:obj:`rest_framework.viewsets.GenericViewSet` API endpoint that lists all possible owners. .. py:attribute:: authentication_classes .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:method:: get_queryset() Filter users with at least one resource .. py:class:: ResourceBaseViewSet Bases: :py:obj:`dynamic_rest.viewsets.DynamicModelViewSet` API endpoint that allows base resources to be viewed or edited. .. py:attribute:: authentication_classes .. py:attribute:: permission_classes .. py:attribute:: filter_backends .. py:attribute:: queryset .. py:attribute:: serializer_class .. py:attribute:: pagination_class .. py:method:: _filtered(request, filter) .. py:method:: approved(request, *args, **kwargs) .. py:method:: published(request, *args, **kwargs) .. py:method:: featured(request, *args, **kwargs) .. py:method:: favorites(request, pk=None, *args, **kwargs) .. py:method:: favorite(request, pk=None, *args, **kwargs) .. py:method:: resource_types(request, *args, **kwargs) .. py:method:: resource_service_permissions(request, pk, *args, **kwargs) Instructs the Async dispatcher to execute a 'DELETE' or 'UPDATE' on the permissions of a valid 'uuid' .. code-block:: yaml - GET input_params: { id: "" } - DELETE input_params: { id: "" } - PUT input_params: { id: "" owner: str = None permissions: dict = {} created: bool = False } - output_params: { output: { uuid: "" } } .. code-block:: yaml - output: { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } Sample Requests: - Removes all the permissions (except owner and admin ones) from a Resource: .. code-block:: bash curl -v -X DELETE -u admin:admin -H "Content-Type: application/json" http://localhost:8000/api/v2/resources//permissions - Changes the owner of a Resource: .. code-block:: bash curl -u admin:admin --location --request PUT 'http://localhost:8000/api/v2/resources//permissions' \ --header 'Content-Type: application/json' \ --data-raw '{"groups": [],"organizations": [],"users": [{"id": 1001,"permissions": "owner"}]}' - Assigns View permissions to some users: .. code-block:: bash curl -u admin:admin --location --request PUT 'http://localhost:8000/api/v2/resources//permissions' \ --header 'Content-Type: application/json' \ --data-raw '{"groups": [],"organizations": [],"users": [{"id": 1000,"permissions": "view"}]}' - Assigns View permissions to anyone: .. code-block:: bash curl -u admin:admin --location --request PUT 'http://localhost:8000/api/v2/resources//permissions' \ --header 'Content-Type: application/json' \ --data-raw '{"groups": [],"organizations": [],"users": [{"id": -1,"permissions": "view"}]}' - Assigns View permissions to anyone and edit permissions to a Group on a Dataset: .. code-block:: bash curl -u admin:admin --location --request PUT 'http://localhost:8000/api/v2/resources//permissions' \ --header 'Content-Type: application/json' \ --data-raw '{"groups": [{"id": 1,"permissions": "manage"}],"organizations": [],"users": [{"id": -1,"permissions": "view"}]}' .. py:method:: set_thumbnail_from_bbox(request, resource_id, *args, **kwargs) .. py:method:: resource_service_ingest(request, resource_type: str = None, *args, **kwargs) Instructs the Async dispatcher to execute an 'INGEST' operation. .. warning:: 'owner' is mandatory in the `defaults` field. - **POST input_params**: - `uuid`: "" - `files`: "" - `defaults`: "{"owner":"",}" - `resource_type`: "']>" - **output_params**: - `output`: - **output**: .. code-block:: json { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } **Sample Request**: 1. **POST**: .. code-block:: bash curl -v -X POST -u admin:admin -H "Content-Type: application/json" \ -d 'defaults={"owner":"admin","title":"pippo"}' \ -d 'files=["/mnt/c/Data/flowers.jpg"]' \ http://localhost:8000/api/v2/resources/ingest/document **Response**: .. code-block:: json { "status": "ready", "execution_id": "90ca670d-df60-44b6-b358-d792c6aecc58", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/90ca670d-df60-44b6-b358-d792c6aecc58" } 2. **GET**: .. code-block:: bash curl -v -X GET -u admin:admin http://localhost:8000/api/v2/resource-service/execution-status/90ca670d-df60-44b6-b358-d792c6aecc58 **Response**: .. code-block:: json { "user": "admin", "status": "finished", "func_name": "create", "created": "2021-07-22T15:32:09.096075Z", "finished": "2021-07-22T15:32:26.936683Z", "last_updated": "2021-07-22T15:32:09.096129Z", "input_params": { "uuid": "fa404f64-eb01-11eb-8f91-00155d41f2fb", "files": "['/mnt/c/Data/flowers.jpg']", "defaults": "{'owner':'admin','title':'pippo'}", "resource_type": "dataset" }, "output_params": { "output": { "uuid": "fa404f64-eb01-11eb-8f91-00155d41f2fb" } } } .. py:method:: resource_service_create(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. - **POST input_params**: :param uuid: :param defaults: {"owner":"",} :param resource_type: ']> .. note:: 'owner' is mandatory - **output_params**: :param output: - **output**: .. code-block:: json { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } **Sample Request**: .. code-block:: bash 1. curl -v -X POST -u admin:admin -H "Content-Type: application/json" \ -d 'defaults={"owner":"admin","title":"pippo"}' \ http://localhost:8000/api/v2/resources/create/dataset OUTPUT: .. code-block:: json { "status": "ready", "execution_id": "90ca670d-df60-44b6-b358-d792c6aecc58", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/90ca670d-df60-44b6-b358-d792c6aecc58" } .. code-block:: bash 2. curl -v -X GET -u admin:admin \ http://localhost:8000/api/v2/resource-service/execution-status/90ca670d-df60-44b6-b358-d792c6aecc58 OUTPUT: .. code-block:: json { "user": "admin", "status": "finished", "func_name": "create", "created": "2021-07-22T15:32:09.096075Z", "finished": "2021-07-22T15:32:26.936683Z", "last_updated": "2021-07-22T15:32:09.096129Z", "input_params": { "uuid": "fa404f64-eb01-11eb-8f91-00155d41f2fb", "defaults": "{'owner':'admin','title':'pippo'}", "resource_type": "dataset" }, "output_params": { "output": { "uuid": "fa404f64-eb01-11eb-8f91-00155d41f2fb" } } } .. py:method:: resource_service_delete(request, pk, *args, **kwargs) Instructs the Async dispatcher to execute a 'DELETE' operation over a valid 'uuid' - DELETE .. code-block:: yaml -input_params: { id: "" } - output_params: { output: } - output: { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } Sample request: .. code-block:: bash curl -v -X DELETE -u admin:admin http://localhost:8000/api/v2/resources//delete OUTPUT: .. code-block:: json { "status":"ready", "execution_id":"7ed0b141-cf85-434f-bbfb-c02447a5221b", "status_url":"http://localhost:8000/api/v2/resource-service/execution-status/7ed0b141-cf85-434f-bbfb-c02447a5221b" } .. code-block:: bash curl -v -X GET -u admin:admin http://localhost:8000/api/v2/resource-service/execution-status/7ed0b141-cf85-434f-bbfb-c02447a5221b OUTPUT: .. code-block:: json { "user":"admin", "status":"finished", "func_name":"delete", "created":"2021-07-19T14:09:59.930619Z", "finished":"2021-07-19T14:10:00.054915Z", "last_updated":"2021-07-19T14:09:59.930647Z", "input_params":{"uuid":"1234"}, "output_params":{"output":0} } .. py:method:: resource_service_update(request, pk, *args, **kwargs) Instructs the Async dispatcher to execute a 'UPDATE' operation over a valid 'uuid' - PUT .. code-block:: yaml - input_params: { id: "" xml_file: str = None metadata_uploaded: bool = False vals: dict = {} regions: list = [] keywords: list = [] custom: dict = {} notify: bool = True } - output_params: { output: { uuid: "" } } - output: .. code-block:: json { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } Sample Request: .. code-block:: bash curl -v -X PUT -u admin:admin -H "Content-Type: application/json" -d 'vals={"title":"pippo"}' http://localhost:8000/api/v2/resources//update OUTPUT: .. code-block:: json { "status":"ready", "execution_id":"08846e84-eae4-11eb-84be-00155d41f2fb", "status_url":"http://localhost:8000/api/v2/resource-service/execution-status/08846e84-eae4-11eb-84be-00155d41f2fb" } .. code-block:: bash curl -v -X GET -u admin:admin http://localhost:8000/api/v2/resource-service/execution-status/08846e84-eae4-11eb-84be-00155d41f2fb OUTPUT: .. code-block:: json { "user": "admin", "status": "finished", "func_name": "update", "created": "2021-07-22T14:42:56.284740Z", "finished": "2021-07-22T14:43:01.813971Z", "last_updated": "2021-07-22T14:42:56.284797Z", "input_params": { "uuid": "ee11541c-eaee-11eb-942c-00155d41f2fb", "vals": "{'title':'pippo'}", "custom": {}, "notify": true, "regions": [], "keywords": [], "xml_file": null, "metadata_uploaded": false }, "output_params": { "output": { "uuid": "ee11541c-eaee-11eb-942c-00155d41f2fb" } } } Sample Request with more parameters: .. code-block:: bash curl -v -X PUT -u admin:admin -H "Content-Type: application/json" -d 'vals={"title":"pippo"}' -d 'metadata_uploaded=true' -d 'keywords=["k1", "k2", "k3"]' http://localhost:8000/api/v2/resources//update .. py:method:: resource_service_copy(request, pk, *args, **kwargs) Instructs the Async dispatcher to execute a 'COPY' operation over a valid 'pk' PUT .. code-block:: yaml input_params: { instance: "" owner: ">" defaults: dict = {} } - output_params: { output: { uuid: "" } } output: .. code-block:: json { "status": "ready", "execution_id": "", "status_url": "http://localhost:8000/api/v2/resource-service/execution-status/" } Sample Request: .. code-block:: bash curl -v -X PUT -u admin:admin -H "Content-Type: application/json" -d 'defaults={"title":"pippo"}' http://localhost:8000/api/v2/resources//copy OUTPUT: .. code-block:: json { "status":"ready", "execution_id":"08846e84-eae4-11eb-84be-00155d41f2fb", "status_url":"http://localhost:8000/api/v2/resource-service/execution-status/08846e84-eae4-11eb-84be-00155d41f2fb" } .. code-block:: bash curl -v -X GET -u admin:admin http://localhost:8000/api/v2/resource-service/execution-status/08846e84-eae4-11eb-84be-00155d41f2fb OUTPUT: .. code-block:: yaml { "user": "admin", "status": "finished", "func_name": "update", "created": "2021-07-22T14:42:56.284740Z", "finished": "2021-07-22T14:43:01.813971Z", "last_updated": "2021-07-22T14:42:56.284797Z", "input_params": { "uuid": "ee11541c-eaee-11eb-942c-00155d41f2fb", "defaults": "{"title":"pippo"}" }, "output_params": { "output": { "uuid": "ee11541c-eaee-11eb-942c-00155d41f2fb" } } } .. py:method:: ratings(request, pk, *args, **kwargs) .. py:method:: set_thumbnail(request, pk, *args, **kwargs) .. py:method:: extra_metadata(request, pk, *args, **kwargs) - PUT update specific metadata. The ID of the metadata is required to perform the update .. code-block:: yaml { "id": 1, "name": "foo_name", "slug": "foo_sug", "help_text": "object", "field_type": "int", "value": "object", "category": "object" } - DELETE Expect a payload with the IDs of the metadata that should be deleted. Payload be like: [4, 3] - POST .. code-block:: yaml { "name": "foo_name", "slug": "foo_sug", "help_text": "object", "field_type": "int", "value": "object", "category": "object" } .. py:method:: _get_request_params(request, encode=False) The request with the barer token access to the request.data during the token verification so in this case if the request.body cannot not access, we just re-access to the request.data to get the params needed .. py:method:: linked_resources(request, pk, *args, **kwargs) .. py:function:: base_linked_resources(instance, user, params)