summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r--ishtar/furnitures/views.py16
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 \