28
28
from django .forms .models import model_to_dict
29
29
from django .contrib .auth import get_user_model
30
30
from django .db .models .query import QuerySet
31
+ from geonode .assets .utils import get_default_asset
31
32
from geonode .people import Roles
32
33
from django .http import QueryDict
33
34
from deprecated import deprecated
62
63
from geonode .geoapps .models import GeoApp
63
64
from geonode .groups .models import GroupCategory , GroupProfile
64
65
from geonode .base .api .fields import ComplexDynamicRelationField
65
- from geonode .layers .utils import get_dataset_download_handlers , get_default_dataset_download_handler
66
+ from geonode .layers .utils import get_download_handlers , get_default_dataset_download_handler
67
+ from geonode .assets .handlers import asset_handler_registry
66
68
from geonode .utils import build_absolute_uri
67
69
from geonode .security .utils import get_resources_with_perms , get_geoapp_subtypes
68
70
from geonode .resource .models import ExecutionRequest
@@ -298,15 +300,24 @@ def get_attribute(self, instance):
298
300
except Exception as e :
299
301
logger .exception (e )
300
302
raise e
303
+
304
+ asset = get_default_asset (_instance )
305
+ if asset is not None :
306
+ asset_url = asset_handler_registry .get_handler (asset ).create_download_url (asset )
307
+
301
308
if _instance .resource_type in ["map" ] + get_geoapp_subtypes ():
302
309
return []
303
310
elif _instance .resource_type in ["document" ]:
304
- return [
311
+ payload = [
305
312
{
306
313
"url" : _instance .download_url ,
307
314
"ajax_safe" : _instance .download_is_ajax_safe ,
308
- }
315
+ },
309
316
]
317
+ if asset :
318
+ payload .append ({"url" : asset_url , "ajax_safe" : False , "default" : False })
319
+ return payload
320
+
310
321
elif _instance .resource_type in ["dataset" ]:
311
322
download_urls = []
312
323
# lets get only the default one first to set it
@@ -315,11 +326,14 @@ def get_attribute(self, instance):
315
326
if obj .download_url :
316
327
download_urls .append ({"url" : obj .download_url , "ajax_safe" : obj .is_ajax_safe , "default" : True })
317
328
# then let's prepare the payload with everything
318
- handler_list = get_dataset_download_handlers ()
319
- for handler in handler_list :
329
+ for handler in get_download_handlers ():
320
330
obj = handler (self .context .get ("request" ), _instance .alternate )
321
331
if obj .download_url :
322
332
download_urls .append ({"url" : obj .download_url , "ajax_safe" : obj .is_ajax_safe , "default" : False })
333
+
334
+ if asset :
335
+ download_urls .append ({"url" : asset_url , "ajax_safe" : True , "default" : False if download_urls else True })
336
+
323
337
return download_urls
324
338
else :
325
339
return []
0 commit comments