diff options
| 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 | 
| commit | 1507fa4088ef3837f73ff041657f1bc3e9f9c968 (patch) | |
| tree | c97a7da6846c58f57066ae542c1109b1435e627d | |
| parent | 754538f94ef0297deff87057191b181f61758ed5 (diff) | |
| download | Ishtar-1507fa4088ef3837f73ff041657f1bc3e9f9c968.tar.bz2 Ishtar-1507fa4088ef3837f73ff041657f1bc3e9f9c968.zip | |
Improve get_item
Manage associated (sub) models for query
| -rw-r--r-- | ishtar_common/views.py | 9 | 
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() | 
