diff --git a/mo/imports.py b/mo/imports.py index d4be97126dbc60c3341da69a2b539ae3932a8697..51aa689b4e9a77adbbfc85124a688f0e0e552507 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -69,6 +69,7 @@ class Import: gatekeeper: mo.rights.Gatekeeper new_user_ids: List[int] line_number: int = 0 + row_name: Optional[str] = None def __init__(self): self.errors = [] @@ -84,7 +85,10 @@ class Import: def error(self, msg: str) -> Any: if self.line_number > 0: - msg = f"Řádek {self.line_number}: {msg}" + if self.row_name: + msg = f"Řádek {self.line_number} ({self.row_name}): {msg}" + else: + msg = f"Řádek {self.line_number}: {msg}" self.errors.append(msg) logger.info('Import: >> %s', msg) return None # Kdyby bylo otypováno správně jako -> None, při volání by si mypy stěžoval @@ -376,6 +380,12 @@ class Import: except UnicodeDecodeError: return False + def get_row_name(self, row: mo.csv.Row) -> Optional[str]: + if hasattr(row, 'email'): + return row.email # type: ignore + # čtení prvku potomka + return None + def generic_import(self, path: str) -> bool: charset = self.fmt.get_charset() if charset != 'utf-8' and self.check_utf8(path): @@ -396,12 +406,14 @@ class Import: self.line_number = 2 for row in rows: + self.row_name = self.get_row_name(row) self.cnt_rows += 1 self.import_row(row) if len(self.errors) >= 100: self.errors.append('Import přerušen pro příliš mnoho chyb') break self.line_number += 1 + self.row_name = None return len(self.errors) == 0