diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-01-10 11:04:04 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-16 16:40:54 +0200 |
commit | 1e0ba5c083005ecbfde7b6218e5f46a6a06012d2 (patch) | |
tree | 06d7d9a3b2fa2330908eba41bb076c9b4b6eac15 /ishtar_common/data_importer.py | |
parent | 739a36dc0f006a206e24c96324cda192d5b6837b (diff) | |
download | Ishtar-1e0ba5c083005ecbfde7b6218e5f46a6a06012d2.tar.bz2 Ishtar-1e0ba5c083005ecbfde7b6218e5f46a6a06012d2.zip |
🐛 CSV result - fix missing columns (refs #5677) - 🩹 improve CSV result values
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r-- | ishtar_common/data_importer.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 3b7e4305e..90cabf0b1 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -61,7 +61,7 @@ def pre_importer_action(func): return wrapper -class ImportFormater(object): +class ImportFormater: def __init__( self, field_name, @@ -1139,7 +1139,6 @@ class Importer(object): self.to_be_close = [] self.idx_line = idx_line if self.skip_lines > idx_line: - self.validity.append(line) return if not line: self.validity.append([]) @@ -1189,7 +1188,6 @@ class Importer(object): if nok or not any(1 for k in test_dict if test_dict[k]): # test empty dict continue data = update_data(defaults, data) - self.validity.append(c_row) if not self.c_errors and (idx_col + 1) < self.min_col_number: self.c_errors = True @@ -1445,7 +1443,7 @@ class Importer(object): func = formater.formater if type(func) in (list, tuple): func = func[idx_fields] - if not callable(func) and type(func) == str: + if not callable(func) and isinstance(func, str): func = getattr(self, func) values = [val] @@ -1523,18 +1521,21 @@ class Importer(object): printed_values = value if type(value) not in (list, tuple): printed_values = [value] + if isinstance(func, FileFormater): + printed_values = [str(v).split(os.sep)[-1] for v in printed_values] try: # don't reunicode - unicoded values c_values.append(" ; ".join([v for v in printed_values])) except TypeError: c_values.append(" ; ".join([str(v) for v in printed_values])) + if value is None and formater.required: self.c_errors = True self.errors.append( (idx_line + 1, idx_col + 1, self.ERRORS["value_required"]) ) + c_row.append("") return data - field_names = [field_name] force_news = [force_new] concats = formater.concat @@ -1557,6 +1558,8 @@ class Importer(object): self._throughs.append((formater, value)) else: for idx, f_name in enumerate(field_names): + if not f_name: + continue self._field_name_to_data_dict( f_name, value, @@ -2201,7 +2204,8 @@ class Importer(object): return self._get_csv(self.errors, header=[_("line"), _("col"), _("error")]) def get_csv_result(self): - return self._get_csv(self.validity) + header = [(line_format and line_format.label) or "-" for line_format in self.LINE_FORMAT] + return self._get_csv(self.validity, header=header) def get_csv_matches(self): header = [_("field"), _("source"), _("result")] |