diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-03-15 17:05:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:21:00 +0100 |
commit | 222dac8bce00300a26c8aa7bba99ae7160723946 (patch) | |
tree | 1e48546125087a3b16ff9afcae784461d7f51a97 /ishtar_common/views_item.py | |
parent | b36bd54a551eedb1129e60c3edc558591d417b9a (diff) | |
download | Ishtar-222dac8bce00300a26c8aa7bba99ae7160723946.tar.bz2 Ishtar-222dac8bce00300a26c8aa7bba99ae7160723946.zip |
Geodata: fix search display
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 404df6f90..68a340a75 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -20,6 +20,7 @@ from django.contrib.staticfiles.templatetags.staticfiles import static from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist from django.db.models import ( + F, Q, Count, Sum, @@ -1361,7 +1362,8 @@ def _format_geojson(rows, link_template): return data -def _get_data_from_query(items, query_table_cols, extra_request_keys, point_field=None): +def _get_data_from_query(items, query_table_cols, extra_request_keys, + point_fields=None): # TODO: manage data json field for query_keys in query_table_cols: if not isinstance(query_keys, (tuple, list)): @@ -1379,25 +1381,21 @@ def _get_data_from_query(items, query_table_cols, extra_request_keys, point_fiel query_key.replace(".", "__") # class style to query values = ["id"] + query_table_cols - if point_field: + if point_fields: profile = get_current_profile() precision = profile.point_precision if precision is not None: exp_x = ExpressionWrapper( - Round(Func(point_field, function="ST_X"), precision), + Round(point_fields[0], precision), output_field=FloatField(), ) exp_y = ExpressionWrapper( - Round(Func(point_field, function="ST_Y"), precision), + Round(point_fields[1], precision), output_field=FloatField(), ) else: - exp_x = ExpressionWrapper( - Func(point_field, function="ST_X"), output_field=FloatField() - ) - exp_y = ExpressionWrapper( - Func(point_field, function="ST_Y"), output_field=FloatField() - ) + exp_x = F(point_fields[0]) + exp_y = F(point_fields[1]) items = items.annotate(point_x=exp_x) items = items.annotate(point_y=exp_y) values += ["point_x", "point_y"] @@ -2100,12 +2098,13 @@ def get_item( query_table_cols.append("main_image__image") table_cols.append("main_image__image") elif data_type == "json-map": + base_query_key = "main_geodata__" if model.SLUG == "find": - query_table_cols.append("base_finds__point_2d") - table_cols.append("base_finds__point_2d") - else: - query_table_cols.append("point_2d") - table_cols.append("point_2d") + base_query_key = "base_finds__" + base_query_key + query_table_cols += [base_query_key + "cached_x", + base_query_key + "cached_y"] + table_cols += [base_query_key + "cached_x", + base_query_key + "cached_y"] # manage sort tables manual_sort_key = None @@ -2195,9 +2194,10 @@ def get_item( items = [item.get_previous(old) for item in items] if data_type == "json-map": - point_field = query_table_cols.pop() + point_fields = query_table_cols[-2:] datas = _get_data_from_query( - items, query_table_cols, my_extra_request_keys, point_field=point_field + items, query_table_cols, my_extra_request_keys, + point_fields=point_fields ) elif data_type != "csv" and getattr(model, "NEW_QUERY_ENGINE", False): datas = _get_data_from_query(items, query_table_cols, my_extra_request_keys) |