From d64b1cb276501821334712ecb3e6285cec4e9602 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Fri, 29 Sep 2023 18:34:41 +0200 Subject: [PATCH] =?UTF-8?q?Import:=20Varov=C3=A1n=C3=AD=20jsou=20fat=C3=A1?= =?UTF-8?q?ln=C3=AD,=20ale=20jdou=20overridovat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/imports.py | 8 ++++---- mo/web/imports.py | 3 ++- mo/web/templates/org_generic_import.html | 6 ++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mo/imports.py b/mo/imports.py index 18f86059..f326b767 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -383,7 +383,7 @@ class Import: return row.email # type: ignore return None - def generic_import(self, path: str) -> bool: + def generic_import(self, path: str, despite_warnings: bool) -> bool: charset = self.fmt.get_charset() if charset != 'utf-8' and self.check_utf8(path): logger.info('Import: Uhodnuto kódování utf-8') @@ -412,7 +412,7 @@ class Import: self.line_number += 1 self.row_name = None - return len(self.errors) == 0 + return len(self.errors) == 0 and (len(self.warnings) == 0 or despite_warnings) def notify_users(self) -> None: # Projde všechny uživatele a těm, kteří ještě nemají nastavené heslo, @@ -436,10 +436,10 @@ class Import: mo.csv.write(file=out, fmt=self.fmt, row_class=self.row_class, rows=[self.row_example]) return out.getvalue() - def run(self, path: str) -> bool: + def run(self, path: str, despite_warnings: bool = False) -> bool: self.log_start(path) - if not self.generic_import(path): + if not self.generic_import(path, despite_warnings): logger.info('Import: Rollback') db.get_session().rollback() return False diff --git a/mo/web/imports.py b/mo/web/imports.py index b5cf4366..efe5cb19 100644 --- a/mo/web/imports.py +++ b/mo/web/imports.py @@ -19,6 +19,7 @@ class ImportForm(FlaskForm): choices=FileFormat.choices(), coerce=FileFormat.coerce, default=FileFormat.cs_csv, ) + despite_warnings = wtforms.BooleanField('Importovat navzdory varováním') submit = wtforms.SubmitField('Importovat') get_template = wtforms.SubmitField('Stáhnout šablonu') @@ -35,7 +36,7 @@ def generic_import_page(form: ImportForm, imp: Optional[Import], redirect_url: s file = form.file.data.stream import_tmp = mo.util.link_to_dir(file.name, mo.util.data_dir('imports'), suffix='.csv') - if imp.run(import_tmp): + if imp.run(import_tmp, despite_warnings=form.despite_warnings.data): if imp.cnt_rows == 0: flash('Soubor neobsahoval žádné řádky s daty', 'danger') else: diff --git a/mo/web/templates/org_generic_import.html b/mo/web/templates/org_generic_import.html index bd390668..467c086e 100644 --- a/mo/web/templates/org_generic_import.html +++ b/mo/web/templates/org_generic_import.html @@ -14,7 +14,12 @@ Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.plac {% for e in warnings %} {{ e }} {% endfor %} +{% if not errs %} + +<em>Aby se import provedl, zopakujte ho znovu se zaškrtnutým „Importovat navzdory varováním“.</em> +{% endif %} </div> + {% endif %} {% if errs %} @@ -38,6 +43,7 @@ Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.plac {{ form.csrf_token }} {{ wtf.form_field(form.file) }} {{ wtf.form_field(form.fmt) }} +{{ wtf.form_field(form.despite_warnings) }} {% block import_form %}{% endblock %} <div class="btn-group"> {{ wtf.form_field(form.submit, class='btn btn-primary') }} -- GitLab