summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py9
-rw-r--r--ishtar_common/models_common.py1
-rw-r--r--ishtar_common/views_item.py22
3 files changed, 18 insertions, 14 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index b370624fb..00c3b49ce 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -4529,12 +4529,9 @@ class Document(
# search parameters
REVERSED_BOOL_FIELDS = ["image__isnull", "associated_file__isnull"]
DATED_FIELDS = BaseHistorizedItem.DATED_FIELDS + [
- "receipt_date__lte",
- "receipt_date__gte",
- "receipt_date_in_documentation__lte",
- "receipt_date_in_documentation__gte",
- "creation_date__lte",
- "creation_date__gte",
+ "receipt_date",
+ "receipt_date_in_documentation",
+ "creation_date",
]
objects = ExternalIdManager()
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 89471972b..5a32953fe 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1605,6 +1605,7 @@ class BaseHistorizedItem(
"created",
"last_modified",
]
+ DATETIME_FIELDS = ["created", "last_modified", "history_date"]
BOOL_FIELDS = ["locked"]
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 48d8e229b..ed1c0c5bb 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1058,11 +1058,12 @@ for language_code, language_lbl in settings.LANGUAGES:
deactivate()
-def _manage_date(k, dct):
+def _manage_date(k, dct, datetime_fields):
"""
Manage date from a search query
:param k: date key
:param dct: search dict
+ :param datetime_fields: list of known datetime fields to force conversion
:return: None -> search dict is modified
"""
if not isinstance(dct[k], str):
@@ -1121,17 +1122,21 @@ def _manage_date(k, dct):
mins = [value for dt, value in results if dt == "gte"]
maxs = [value for dt, value in results if dt == "lte"]
eqs = [value for dt, value in results if dt == "eq"]
- if eqs and not mins and not maxs: # TODO: min and max not available when using single dates
+ dct.pop(k)
+ root_k = k.split("__")[-1]
+ if root_k in datetime_fields:
+ k += "__date" # force date conversion for datetime fields
+ if eqs and not mins and not maxs:
+ # TODO: min and max not available when using single dates
dct[k] = ";".join(eqs)
return
- dct.pop(k)
if mins:
dct[k + "__gte"] = min(mins)
if maxs:
dct[k + "__lte"] = max(maxs)
-def _manage_dated_fields(dated_fields, dct):
+def _manage_dated_fields(dated_fields, datetime_fields, dct):
keys = list(dct.keys())
for key in dated_fields:
res = [j for j in keys if j.startswith(key)]
@@ -1143,7 +1148,7 @@ def _manage_dated_fields(dated_fields, dct):
if not dct[k]:
dct.pop(k)
continue
- _manage_date(k, dct)
+ _manage_date(k, dct, datetime_fields)
def _clean_type_val(val):
@@ -1955,7 +1960,7 @@ def _get_table_cols(data_type, own_table_cols, full, model):
DEFAULT_ROW_NUMBER = 10
# length is used by ajax DataTables requests
EXCLUDED_FIELDS = ["length"]
-BASE_DATED_FIELDS = ["created", "last_modified"]
+BASE_DATED_FIELDS = ["created", "last_modified", "history_date"]
def get_item(
@@ -2112,6 +2117,7 @@ def get_item(
else:
my_dated_fields = dated_fields[:] if dated_fields else []
my_dated_fields += BASE_DATED_FIELDS
+ datetime_fields = getattr(model, "DATETIME_FIELDS", [])
if not associated_models and hasattr(model, "ASSOCIATED_MODELS"):
my_associated_models = model.ASSOCIATED_MODELS[:]
else:
@@ -2391,8 +2397,8 @@ def get_item(
filtered_dated_fields.append(field_name)
my_dated_fields = filtered_dated_fields
- _manage_dated_fields(my_dated_fields, dct)
- _manage_dated_fields(my_dated_fields, excluded_dct)
+ _manage_dated_fields(my_dated_fields, datetime_fields, dct)
+ _manage_dated_fields(my_dated_fields, datetime_fields, excluded_dct)
_manage_number_fields(my_number_fields, dct)
_manage_number_fields(my_number_fields, excluded_dct)