summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-12-19 19:35:51 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-12-19 19:35:51 +0100
commit1a56bf8cfa9c290f504d0998b4c9ec50148c84d7 (patch)
treec97a7da6846c58f57066ae542c1109b1435e627d
parent233b380423ad58fae0224520d2c5ab51ecaf8f62 (diff)
downloadIshtar-1a56bf8cfa9c290f504d0998b4c9ec50148c84d7.tar.bz2
Ishtar-1a56bf8cfa9c290f504d0998b4c9ec50148c84d7.zip
Improve get_item
Manage associated (sub) models for query
-rw-r--r--ishtar_common/views.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index c03870935..961ff680c 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -188,7 +188,7 @@ HIERARCHIC_FIELDS = ['periods', 'period', 'unit', 'material_type',
PRIVATE_FIELDS = ('id', 'history_modifier', 'order')
def get_item(model, func_name, default_name, extra_request_keys=[],
base_request={}, bool_fields=[], reversed_bool_fields=[],
- dated_fields=[]):
+ dated_fields=[], associated_models=[]):
"""
Generic treatment of tables
"""
@@ -202,6 +202,13 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
request_keys = dict([(field.name,
field.name + (hasattr(field, 'rel') and field.rel and '__pk' or ''))
for field in fields])
+ for associated_model, key in associated_models:
+ associated_fields = [associated_model._meta.get_field_by_name(k)[0]
+ for k in associated_model._meta.get_all_field_names()]
+ request_keys.update(dict([(key + "__" + field.name,
+ key + "__" + field.name + (hasattr(field, 'rel') and
+ field.rel and '__pk' or ''))
+ for field in associated_fields]))
request_keys.update(extra_request_keys)
request_items = request.method == 'POST' and request.POST or request.GET
dct = base_request.copy()