diff options
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 9263ae92a..b97cf77be 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -51,6 +51,7 @@ from django.db.models import ( from django.db.models.functions import ExtractYear from django.db.utils import ProgrammingError from django import forms +from django.contrib.gis.geos import GEOSGeometry from django.forms.models import model_to_dict from django.http import HttpResponse, Http404 from django.shortcuts import render @@ -2354,6 +2355,7 @@ def get_item( no_limit=False, return_query=False, ishtaruser=None, # could be provided when request is None + col_types=None, **dct, ): available_perms = [] @@ -2527,7 +2529,11 @@ def get_item( else: request_keys[jfield.alt_name] = jkey + "__iexact" if "query" in dct: - request_items = dct["query"] + if isinstance(dct["query"], dict): + request_items = dct["query"] + else: + request_items = dct + request_items["search_vector"] = dct.pop("query") request_items["submited"] = True elif request and request.method == "POST": request_items = request.POST @@ -2537,12 +2543,14 @@ def get_item( return HttpResponse(EMPTY, content_type="text/plain") count = dct.get("count", False) - # pager try: row_nb = int(request_items.get("length")) except (ValueError, TypeError): - row_nb = DEFAULT_ROW_NUMBER + if "length" in dct: + row_nb = int(dct["length"]) + else: + row_nb = DEFAULT_ROW_NUMBER if data_type == "json-map": # other limit for map row_nb = settings.ISHTAR_MAP_MAX_ITEMS @@ -3107,6 +3115,8 @@ def get_item( value = value.strftime("%Y-%m-%d") if isinstance(value, datetime.datetime): value = value.strftime("%Y-%m-%d %H:%M:%S") + if isinstance(value, GEOSGeometry): + value = value.ewkt res[k] = value if full == "shortcut": if "cached_label" in res: @@ -3141,6 +3151,8 @@ def get_item( "recordsFiltered": items_nb, "rows": rows, "table-cols": table_cols, + "cols-name": col_names, + "cols-types": col_types, "pinned-search": pinned_search, "page": page_nb, "total": total, |