summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py16
-rw-r--r--ishtar_common/views_item.py78
2 files changed, 58 insertions, 36 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index c9a66f861..e5235f808 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1866,6 +1866,21 @@ class BaseHistorizedItem(FullSearch, Imported, JsonData, FixAssociated):
last_modified = models.DateTimeField(auto_now=True)
history_m2m = JSONField(default={}, blank=True)
+ ALT_NAMES = {
+ 'history_creator': SearchAltName(
+ pgettext_lazy("key for text search", u"created-by"),
+ 'history_creator__ishtaruser__person__cached_label__iexact'
+ ),
+ 'history_modifier': SearchAltName(
+ pgettext_lazy("key for text search", u"modified-by"),
+ 'history_modifier__ishtaruser__person__cached_label__iexact'
+ ),
+ 'modified_since': SearchAltName(
+ pgettext_lazy("key for text search", u"modified-since"),
+ 'last_modified__gte'
+ ),
+ }
+
class Meta:
abstract = True
@@ -4531,6 +4546,7 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel, ValueGetter, MainItem):
'warehouses__name__iexact'
),
}
+ ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)
objects = ExternalIdManager()
RELATIVE_SESSION_NAMES = [
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 96190f083..d54c7d15b 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -661,43 +661,47 @@ for language_code, language_lbl in settings.LANGUAGES:
def _manage_dated_fields(dated_fields, dct):
+ keys = list(dct.keys())
for k in dated_fields:
- if k in dct:
- if not dct[k]:
- dct.pop(k)
- continue
- value = dct[k].replace('"', '').strip()
- has_today = False
- for today in TODAYS:
- if value.startswith(today):
- base_date = datetime.date.today()
- value = value[len(today):].replace(' ', '')
- if value and value[0] in (u"-", u"+"):
- sign = value[0]
- try:
- days = int(value[1:])
- except ValueError:
- days = 0
- if days:
- if sign == u"-":
- base_date = base_date - datetime.timedelta(
- days=days)
- else:
- base_date = base_date + datetime.timedelta(
- days=days)
- dct[k] = base_date.strftime('%Y-%m-%d')
- has_today = True
- break
- if has_today:
- continue
- try:
- items = value.split('/')
- assert len(items) == 3
- dct[k] = virtualtime.datetime(*map(lambda x: int(x),
- reversed(items))) \
- .strftime('%Y-%m-%d')
- except AssertionError:
- dct.pop(k)
+ res = [j for j in keys if j.startswith(k)]
+ if not res:
+ continue
+ k = res[0]
+ if not dct[k]:
+ dct.pop(k)
+ continue
+ value = dct[k].replace('"', '').strip()
+ has_today = False
+ for today in TODAYS:
+ if value.startswith(today):
+ base_date = datetime.date.today()
+ value = value[len(today):].replace(' ', '')
+ if value and value[0] in (u"-", u"+"):
+ sign = value[0]
+ try:
+ days = int(value[1:])
+ except ValueError:
+ days = 0
+ if days:
+ if sign == u"-":
+ base_date = base_date - datetime.timedelta(
+ days=days)
+ else:
+ base_date = base_date + datetime.timedelta(
+ days=days)
+ dct[k] = base_date.strftime('%Y-%m-%d')
+ has_today = True
+ break
+ if has_today:
+ continue
+ try:
+ items = value.split('/')
+ assert len(items) == 3
+ dct[k] = virtualtime.datetime(*map(lambda x: int(x),
+ reversed(items))) \
+ .strftime('%Y-%m-%d')
+ except AssertionError:
+ dct.pop(k)
def _clean_type_val(val):
@@ -1180,6 +1184,7 @@ def _get_data_from_query_old(items, query_table_cols, request,
DEFAULT_ROW_NUMBER = 10
# length is used by ajax DataTables requests
EXCLUDED_FIELDS = ['length']
+BASE_DATED_FIELDS = ['last_modified']
def get_item(model, func_name, default_name, extra_request_keys=None,
@@ -1288,6 +1293,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None,
my_dated_fields = model.DATED_FIELDS[:]
else:
my_dated_fields = dated_fields[:] if dated_fields else []
+ my_dated_fields += BASE_DATED_FIELDS
if not associated_models and hasattr(model, 'ASSOCIATED_MODELS'):
my_associated_models = model.ASSOCIATED_MODELS[:]
else: