summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/static/gis/js/OLMapWidget.js14
-rw-r--r--ishtar_common/static/js/ishtar-map.js12
-rw-r--r--ishtar_common/version.py4
-rw-r--r--ishtar_common/views_item.py43
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]]