diff --git a/mo/imports.py b/mo/imports.py
index 18f86059814d695f8353df687010395a108bcb25..f326b767d5b97dfae180ee0b6a88439148dbf9d7 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 b5cf4366746d1ef77e31c74c2eff5d08b1d1c637..efe5cb19c52c3f1684d32e5a797f62ff32a89a23 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 bd3906686258d0f34cdc270e67134f82b89e4d65..467c086efd647c287a246123afd2f06b9cef028b 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') }}