summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-11-17 18:44:17 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-11-17 18:44:17 +0100
commit73450fd64ccebe7a085c939bdc81ad7597d7b4ea (patch)
tree770c3fc40ac68c70efaa8bd2c155cdf3ced1761d /ishtar_common
parent08f5680610562ea92c6bd8f9476f047fa3ee8c57 (diff)
downloadIshtar-73450fd64ccebe7a085c939bdc81ad7597d7b4ea.tar.bz2
Ishtar-73450fd64ccebe7a085c939bdc81ad7597d7b4ea.zip
Full CSV export: extra non auto columns - allow method to be called
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/views.py39
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:]])