summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-09 00:03:05 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-03-09 00:03:05 +0100
commit9c24abaaaefeefc5cf4dac69cdb80c746cbd0ab4 (patch)
tree5af2f5a4dd39aad4c931a452b99c65d81937645d /ishtar_common
parent8db4031c42b9d3cc36b59bdf636f5e00a963ebcd (diff)
downloadIshtar-9c24abaaaefeefc5cf4dac69cdb80c746cbd0ab4.tar.bz2
Ishtar-9c24abaaaefeefc5cf4dac69cdb80c746cbd0ab4.zip
Export: get header from colum importer settings (refs #3491)
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/data_importer.py4
-rw-r--r--ishtar_common/models.py1
-rw-r--r--ishtar_common/views.py54
3 files changed, 34 insertions, 25 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 61fae2721..d4000b4c1 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -47,7 +47,8 @@ class ImportFormater(object):
through_unicity_keys=None, duplicate_fields=[], regexp=None,
regexp_formater_args=[], force_value=None,
post_processing=False, concat=False, concat_str=False,
- comment="", force_new=None, export_field_name=None):
+ comment="", force_new=None, export_field_name=None,
+ label=""):
self.field_name = field_name
if export_field_name:
self.export_field_name = export_field_name
@@ -71,6 +72,7 @@ class ImportFormater(object):
self.concat_str = concat_str
self.comment = comment
self.force_new = force_new
+ self.label = label
def reinit_db_target(self, db_target, nb=0):
if not self.formater:
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index f22600d12..a2341abdc 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1830,6 +1830,7 @@ class ImporterType(models.Model):
(field.field_name, field.force_new, field.concat,
field.concat_str)
for field in column.duplicate_fields.all()]
+ formater_kwargs['label'] = column.label
formater_kwargs['required'] = column.required
formater_kwargs['force_new'] = force_news
if column.export_field_name:
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 94d754938..6a03f1f60 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -563,7 +563,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
"""
Generic treatment of tables
"""
- def func(request, data_type='json', full=False, force_own=False, **dct):
+ def func(request, data_type='json', full=False, force_own=False,
+ col_names=None, **dct):
# check rights
own = True # more restrictive by default
allowed = False
@@ -1098,28 +1099,32 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
response['Content-Disposition'] = 'attachment; filename=%s'\
% filename
writer = csv.writer(response, **CSV_OPTIONS)
- col_names = []
- for field_name in table_cols:
- if type(field_name) in (list, tuple):
- field_name = u" & ".join(field_name)
- 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
- else:
- try:
- field = model._meta.get_field(field_name)
- except:
- col_names.append(u"".encode(ENCODING))
- logger.warning(
- "**WARN get_item - csv export**: no col name for "
- "{}\nadd explicit label to "
- "EXTRA_FULL_FIELDS_LABELS attribute of "
- "{}".format(field_name, model))
+ if col_names:
+ col_names = [name.encode(ENCODING, errors='replace')
+ for name in col_names]
+ else:
+ col_names = []
+ for field_name in table_cols:
+ if type(field_name) in (list, tuple):
+ field_name = u" & ".join(field_name)
+ 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))
+ logger.warning(
+ "**WARN get_item - csv export**: no col name "
+ "for {}\nadd explicit label to "
+ "EXTRA_FULL_FIELDS_LABELS attribute of "
+ "{}".format(field_name, model))
+ continue
+ col_names.append(
+ unicode(field.verbose_name).encode(ENCODING))
writer.writerow(col_names)
for data in datas:
row, delta = [], 0
@@ -1149,15 +1154,16 @@ def get_by_importer(request, slug, data_type='json', full=False,
res = '{}'
return HttpResponse(res, mimetype='text/plain')
imp = q.all()[0].get_importer_class()
- cols = []
+ cols, col_names = [], []
for formater in imp.LINE_FORMAT:
if not formater:
continue
cols.append(formater.export_field_name)
+ col_names.append(formater.label)
obj_name = imp.OBJECT_CLS.__name__.lower()
return get_item(
imp.OBJECT_CLS, 'get_' + obj_name, obj_name, own_table_cols=cols
- )(request, data_type, full, force_own, **dct)
+ )(request, data_type, full, force_own, col_names=col_names, **dct)
def display_item(model, name, extra_dct=None):