diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 16 | ||||
-rw-r--r-- | ishtar_common/views_item.py | 78 |
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: |