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.DatasetDownloadHandlerruta 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