diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
| -rw-r--r-- | ishtar/furnitures/views.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 8350de9f8..f02d60e20 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -130,17 +130,19 @@ def autocomplete_file(request): for file in files]) return HttpResponse(data, mimetype='text/plain') -def get_item(model, func_name, default_name): +def get_item(model, func_name, default_name, extra_request_keys=[]): """ Generic treatment of tables """ def func(request, type='json', **dct): if not type: type = 'json' - fields = [model._meta.get_field_by_name(k)[0] for k in model._meta.get_all_field_names()] + fields = [model._meta.get_field_by_name(k)[0] + for k in model._meta.get_all_field_names()] request_keys = dict([(field.name, field.name + (hasattr(field, 'rel') and '__pk' or '')) for field in fields]) + request_keys.update(extra_request_keys) dct = {} for k in request_keys: q = request.GET.get(k) @@ -170,7 +172,10 @@ def get_item(model, func_name, default_name): for item in items: data = [item.pk] for k in model.TABLE_COLS: - val = getattr(item, k) + val = item + for ky in k.split('.'): + if val: + val = getattr(val, ky) if hasattr(val, 'all'): # manage related objects data.append(", ".join([v and unicode(v) or u"" for v in getattr(val, 'all')()])) @@ -239,6 +244,11 @@ def autocomplete_operation(request, non_closed=True): get_operation = get_item(models.Operation, 'get_operation', 'operation') +get_administrativeact = get_item(models.AdministrativeAct, + 'get_administrativeact', 'administrativeact', + extra_request_keys={'associated_file__towns':'associated_file__towns__pk', + 'operation__towns':'operation__towns__pk'}) + def autocomplete_organization(request, orga_type=None): if not request.user.has_perm('furnitures.view_organization', models.Organization) and \ |
