diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-11-30 17:49:39 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-11-30 17:49:39 +0100 |
commit | e5291ad557e97c1aa2d516494d25fd72ea33ae91 (patch) | |
tree | 13469ff4be4d6d84ae1272633b3f77ff25304246 /ishtar_common/views.py | |
parent | 8b666443667f92e014d70a4247c7885375bba610 (diff) | |
download | Ishtar-e5291ad557e97c1aa2d516494d25fd72ea33ae91.tar.bz2 Ishtar-e5291ad557e97c1aa2d516494d25fd72ea33ae91.zip |
Treatment searches and sheet
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index cb6afe8c4..4a7c7e2e8 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -528,7 +528,7 @@ HIERARCHIC_FIELDS = ['periods', 'period', 'unit', 'material_types', def get_item(model, func_name, default_name, extra_request_keys=[], - base_request={}, bool_fields=[], reversed_bool_fields=[], + base_request=None, bool_fields=[], reversed_bool_fields=[], dated_fields=[], associated_models=[], relative_session_names=[], specific_perms=[], own_table_cols=None, relation_types_prefix={}): """ @@ -577,10 +577,12 @@ def get_item(model, func_name, default_name, extra_request_keys=[], my_extra_request_keys = copy(model.EXTRA_REQUEST_KEYS) else: my_extra_request_keys = copy(extra_request_keys) - if not base_request and hasattr(model, 'BASE_REQUEST'): + if base_request is None and hasattr(model, 'BASE_REQUEST'): my_base_request = copy(model.BASE_REQUEST) - else: + elif base_request is not None: my_base_request = copy(base_request) + else: + my_base_request = {} if not bool_fields and hasattr(model, 'BOOL_FIELDS'): my_bool_fields = model.BOOL_FIELDS[:] else: @@ -677,7 +679,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], request.session[default_name].split('-')[-1]} else: dct = {"pk": request.session[default_name]} - elif dct == base_request: + elif dct == (base_request or {}): # a parent item may be selected in the default menu for name, key in my_relative_session_names: if name in request.session and request.session[name]: @@ -931,10 +933,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[], v = v() new_vals.append(v) elif val: - val = getattr(val, ky) - if callable(val): - val = val() - new_vals.append(val) + try: + val = getattr(val, ky) + if callable(val): + val = val() + new_vals.append(val) + except AttributeError: + # must be a query key such as "contains" + pass vals = new_vals # manage last related objects if vals and hasattr(vals[0], 'all'): |