diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/static/gis/js/OLMapWidget.js | 14 | ||||
| -rw-r--r-- | ishtar_common/static/js/ishtar-map.js | 12 | ||||
| -rw-r--r-- | ishtar_common/version.py | 4 | ||||
| -rw-r--r-- | ishtar_common/views_item.py | 43 |
4 files changed, 55 insertions, 18 deletions
diff --git a/ishtar_common/static/gis/js/OLMapWidget.js b/ishtar_common/static/gis/js/OLMapWidget.js index 22047b86d..bdc34593c 100644 --- a/ishtar_common/static/gis/js/OLMapWidget.js +++ b/ishtar_common/static/gis/js/OLMapWidget.js @@ -179,7 +179,19 @@ ol_ext_inherits(GeometryTypeControl, ol.control.Control); } } if (!options.base_layer) { - this.options.base_layer = new ol.layer.Tile({source: new ol.source.OSM()}); + this.options.base_layer = new ol.layer.Tile({ + source: new ol.source.OSM({ + // remove in when switching to OL>= 10.6.1 -> new ol.source.OSM() + tileLoadFunction: (imageTile, src) => { + const img = imageTile.getImage(); + // Set the per-image referrer policy before assigning the src + if (img && 'referrerPolicy' in img) { + img.referrerPolicy = 'origin-when-cross-origin'; + } + img.src = src; + } + }) + }); } this.map = this.createMap(); diff --git a/ishtar_common/static/js/ishtar-map.js b/ishtar_common/static/js/ishtar-map.js index 46a31c28e..b28f5fe0e 100644 --- a/ishtar_common/static/js/ishtar-map.js +++ b/ishtar_common/static/js/ishtar-map.js @@ -192,7 +192,17 @@ var TrackPositionControl = (function (Control) { /* base layers */ var source_osm = function(options){ - options["source"] = new ol.source.OSM(); + options["source"] = new ol.source.OSM({ + // remove in when switching to OL>= 10.6.1 -> new ol.source.OSM() + tileLoadFunction: (imageTile, src) => { + const img = imageTile.getImage(); + // Set the per-image referrer policy before assigning the src + if (img && 'referrerPolicy' in img) { + img.referrerPolicy = 'origin-when-cross-origin'; + } + img.src = src; + } + }); return new ol.layer.Tile(options); }; diff --git a/ishtar_common/version.py b/ishtar_common/version.py index 0b65315f1..f259bdc1f 100644 --- a/ishtar_common/version.py +++ b/ishtar_common/version.py @@ -1,5 +1,5 @@ -# 4.99.33 -VERSION = (4, 99, 33) +# 4.99.34 +VERSION = (4, 99, 34) def get_version(): diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 03120ccda..ccc514070 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -36,7 +36,8 @@ from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType from django.contrib.gis.geos import GEOSException from django.core.cache import cache -from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, PermissionDenied +from django.core.exceptions import FieldDoesNotExist, FieldError, ObjectDoesNotExist,\ + PermissionDenied from django.db.models import ( F, Q, @@ -1942,7 +1943,8 @@ def _format_geojson(rows, link_template, display_polygon): def _get_data_from_query(items, query_table_cols, extra_request_keys, - geo_fields=None, geo_import_key=None, geo_type=None, q_slice=None): + geo_fields=None, geo_import_key=None, geo_type=None, + q_slice=None): # TODO: manage data json field for query_keys in query_table_cols: if not isinstance(query_keys, (tuple, list)): @@ -1982,10 +1984,15 @@ def _get_data_from_query(items, query_table_cols, extra_request_keys, values.append("locked") values.append("lock_user_id") values = [v for v in values if v] # filter empty values - if q_slice: - result = items[q_slice[0]:q_slice[1]].values_list(*values) - else: - result = items.values_list(*values) + try: + if q_slice: + result = items[q_slice[0]:q_slice[1]].values_list(*values) + else: + result = items.values_list(*values) + except FieldError as e: + error = str(e)[:100] + " (...)" + error = str(_("Importer configuration error: {}.")).format(error) + raise ValueError(error) if not geo_import_key and not geo_type: return result @@ -3305,15 +3312,23 @@ def get_item( geo_fields = query_table_cols[-4:] else: geo_fields = query_table_cols[-2:] - datas = _get_data_from_query( - items, query_table_cols, my_extra_request_keys, - geo_fields=geo_fields, q_slice=q_slice - ) + try: + datas = _get_data_from_query( + items, query_table_cols, my_extra_request_keys, + geo_fields=geo_fields, q_slice=q_slice + ) + except ValueError as e: + data = json.dumps({"error": str(e)}) + return HttpResponse(data, content_type="application/json") elif data_type != "csv" and getattr(model, "NEW_QUERY_ENGINE", False): - datas = _get_data_from_query( - items, query_table_cols, my_extra_request_keys, - geo_import_key=geo_import_key, geo_type=geo_type, q_slice=q_slice, - ) + try: + datas = _get_data_from_query( + items, query_table_cols, my_extra_request_keys, + geo_import_key=geo_import_key, geo_type=geo_type, q_slice=q_slice, + ) + except ValueError as e: + data = json.dumps({"error": str(e)}) + return HttpResponse(data, content_type="application/json") else: if q_slice: items = items[q_slice[0]:q_slice[1]] |
