add |form_asset_url filter to form asset url from commune sites (#51632)

This commit is contained in:
Frédéric Péters 2021-03-16 09:56:35 +01:00
parent 8c8a3bd9ae
commit 99f47e5ef6
1 changed files with 21 additions and 0 deletions

View File

@ -21,6 +21,7 @@ import json
import operator import operator
import random import random
import re import re
import urllib.parse
from pyproj import Geod from pyproj import Geod
from requests import RequestException from requests import RequestException
@ -885,3 +886,23 @@ def airquality_hack(cell, request):
@register.simple_tag @register.simple_tag
def get_known_tile_types(): def get_known_tile_types():
return list(settings.JSON_CELL_TYPES.keys()) return list(settings.JSON_CELL_TYPES.keys())
@register.filter
def form_asset_url(url, is_safe=True):
parsed = urllib.parse.urlparse(url)
form_slug = parsed.path.split('/')[1]
# look for wcs service where the form is from, to get service prefix
for service_key, service_dict in settings.KNOWN_SERVICES.get('wcs').items():
if url.startswith(service_dict.get('url')):
if service_key.startswith('_'):
ou_prefix = service_key.rsplit('_', 1)[0] + '_'
else:
ou_prefix = ''
break
# get matching portal
combo_service = settings.KNOWN_SERVICES.get('combo').get(ou_prefix + 'portal')
if not combo_service:
return ''
# return well-known stable asset URL
return urllib.parse.urljoin(combo_service.get('url'), '/assets/wcs:form:picture:eservices:%s' % form_slug)