Skip to content
Snippets Groups Projects

Připsání mailu do chybové hlášky při importu.

Merged Jiří Kalvoda requested to merge jk/issue-190 into devel
2 unresolved threads
1 file
+ 9
3
Compare changes
  • Side-by-side
  • Inline
+ 9
3
@@ -69,6 +69,7 @@ class Import:
gatekeeper: mo.rights.Gatekeeper
new_user_ids: List[int]
line_number: int = 0
row: Optional[mo.csv.Row] = None
def __init__(self):
self.errors = []
@@ -84,7 +85,11 @@ class Import:
def error(self, msg: str) -> Any:
if self.line_number > 0:
msg = f"Řádek {self.line_number}: {msg}"
try:
msg = f"Řádek {self.line_number} ({self.row.email}): {msg}" # type: ignore
# (snaha čtení prvku potomka)
except:
msg = f"Řádek {self.line_number}: {msg}"
    • Odchytávat úplně všechny výjimky mi přijde dost nešikovné: může to zamaskovat skutečné chyby v programu. Spíš bych použil if self.row and hasattr(self.row, 'email').

      Ale obecně přemýšlím, jestli vůbec je rozumné udržovat odkaz na aktuální řádek -- běžné funkce na něj nemají co sahat. Nebylo by lepší zavést self.row_name a upravit tu smyčku, která volá import_row, aby zavolala nějakou metodu get_row_name(row)? Ta by byla v obecné třídě Import definovaná tak, že by zkusila najít email, a podtřídy by si ji mohly předefinovat (třeba import bodů by to mohl poskládat ze jména a příjmení). Dává to smysl?

Please register or sign in to reply
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
@@ -395,13 +400,14 @@ class Import:
return self.error(f'Chybná struktura tabulky: {e}')
self.line_number = 2
for row in rows:
for self.row in rows:
self.cnt_rows += 1
self.import_row(row)
self.import_row(self.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 = None
return len(self.errors) == 0
Loading