diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/views.py | 39 | 
1 files changed, 28 insertions, 11 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index c2b12e53f..ae319aa53 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -444,9 +444,13 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          if own_table_cols:              table_cols = own_table_cols          else: -            table_cols = full and [field.name for field in model._meta.fields -                                   if field.name not in PRIVATE_FIELDS] \ -                or model.TABLE_COLS +            if full: +                table_cols = [field.name for field in model._meta.fields +                              if field.name not in PRIVATE_FIELDS] +                if hasattr(model, 'EXTRA_FULL_FIELDS'): +                    table_cols += model.EXTRA_FULL_FIELDS +            else: +                table_cols = model.TABLE_COLS          # manage sort tables          manual_sort_key = None          order = request_items.get('sord') @@ -511,9 +515,15 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                              if hasattr(val, 'all'):  # manage related objects                                  val = list(val.all())                                  for v in val: -                                    new_vals.append(getattr(v, ky)) +                                    v = getattr(v, ky) +                                    if callable(v): +                                        v = v() +                                    new_vals.append(v)                              elif val: -                                new_vals.append(getattr(val, ky)) +                                val = getattr(val, ky) +                                if callable(val): +                                    val = val() +                                new_vals.append(val)                          vals = new_vals                      # manage last related objects                      if vals and hasattr(vals[0], 'all'): @@ -522,7 +532,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],                              new_vals += list(val.all())                          vals = new_vals                      if not my_vals: -                        my_vals = [format_val(v) for v in vals] +                        my_vals = [format_val(va) for va in vals]                      else:                          new_vals = []                          if not vals: @@ -590,12 +600,19 @@ def get_item(model, func_name, default_name, extra_request_keys=[],              writer = csv.writer(response, **CSV_OPTIONS)              col_names = []              for field_name in table_cols: -                try: -                    field = model._meta.get_field(field_name) -                except: -                    col_names.append(u"".encode(ENCODING)) +                if hasattr(model, 'EXTRA_FULL_FIELDS_LABELS') and\ +                        field_name in model.EXTRA_FULL_FIELDS_LABELS: +                    field = model.EXTRA_FULL_FIELDS_LABELS[field_name] +                    col_names.append(unicode(field).encode(ENCODING))                      continue -                col_names.append(unicode(field.verbose_name).encode(ENCODING)) +                else: +                    try: +                        field = model._meta.get_field(field_name) +                    except: +                        col_names.append(u"".encode(ENCODING)) +                        continue +                    col_names.append( +                        unicode(field.verbose_name).encode(ENCODING))              writer.writerow(col_names)              for data in datas:                  writer.writerow([val.encode(ENCODING) for val in data[1:]]) | 
