Manejadores de Descargas

Con GeoNode 4.2.x se ha introducido el concepto de Manejador de Descargas y, por supuesto, GeoNode proporciona una implementación predeterminada que procesa la descarga a través de WPS

Sigue un ejemplo de cómo crear un controlador de descarga personalizado y reemplazar el predeterminado o agregar uno adicional.

Ajustes

DEFAULT_DATASET_DOWNLOAD_HANDLER

Predeterminado: geonode.layers.download_handler.DatasetDownloadHandler

ruta a la ubicación del controlador de descarga

DATASET_DOWNLOAD_HANDLERS

Predeterminado: []

Lista de rutas de los controladores de descarga adicionales

CODE

El controlador de descarga predeterminado se coloca en el geonode.layers [package](https://github.com/GeoNode/geonode/blob/master/geonode/layers/download_handler.py)

A continuación un ejemplo de una clase básica para definir el controlador de descarga:

class DatasetDownloadHandler:
    def __str__(self):
        return f"{self.__module__}.{self.__class__.__name__}"

    def __repr__(self):
        return self.__str__()

    def __init__(self, request, resource_name) -> None:
        self.request = request
        self.resource_name = resource_name
        self._resource = None

    def get_download_response(self):
        """
        Main method used, this method should return the response object
        """
        return response
        @property

    def download_url(self):
        """
        Used by the API, it should return the URL where the resource can be downloaded from
        """
        return reverse("dataset_download", args=[resource.alternate])

Si prefieres heredar del ya existente, la respuesta se genera en el método process_dowload