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 \  | 
