summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r--ishtar_common/views_item.py78
1 files changed, 42 insertions, 36 deletions
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: