From fe458775ea28b3d51c4a05d7e457e93e859417e4 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sun, 15 Oct 2023 20:58:14 +0200
Subject: [PATCH] =?UTF-8?q?Import:=20Nastane-li=20varov=C3=A1n=C3=AD,=20vy?=
=?UTF-8?q?p=C3=AD=C5=A1eme=20potvrzovac=C3=AD=20str=C3=A1nku?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
To snad bude pro uživatele přívětivější než chtít provést nový
import navzdory varováním.
---
mo/web/imports.py | 18 +++++++++++++-----
mo/web/templates/org_generic_import.html | 19 +++++++++++++++----
2 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/mo/web/imports.py b/mo/web/imports.py
index b5cf4366..5d1dd4e4 100644
--- a/mo/web/imports.py
+++ b/mo/web/imports.py
@@ -27,6 +27,8 @@ def generic_import_page(form: ImportForm, imp: Optional[Import], redirect_url: s
# Případné další parametry (**kwargs) jsou předávány generování stránky
errs = []
warnings = []
+ confirm_only = False
+
if imp:
fmt = form.fmt.data
imp.fmt = fmt
@@ -35,15 +37,19 @@ 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):
+ success = imp.run(import_tmp)
+ errs = imp.errors
+ warnings = imp.warnings
+
+ if success:
if imp.cnt_rows == 0:
flash('Soubor neobsahoval žádné řádky s daty', 'danger')
else:
flash(imp.get_after_import_message(), 'success')
- return redirect(redirect_url)
- else:
- errs = imp.errors
- warnings = imp.warnings
+ if imp.warnings:
+ confirm_only = True
+ else:
+ return redirect(redirect_url)
else:
flash('Vyberte si prosím soubor', 'danger')
elif form.get_template.data:
@@ -58,6 +64,8 @@ def generic_import_page(form: ImportForm, imp: Optional[Import], redirect_url: s
errs=errs,
warnings=warnings,
form=form,
+ confirm_only=confirm_only,
+ redirect_url=redirect_url,
imp=imp,
**kwargs
)
diff --git a/mo/web/templates/org_generic_import.html b/mo/web/templates/org_generic_import.html
index bd390668..97bd1fa7 100644
--- a/mo/web/templates/org_generic_import.html
+++ b/mo/web/templates/org_generic_import.html
@@ -6,27 +6,37 @@ Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.plac
{% endblock %}
{% block body %}
-{% block import_errs %}
+
{% if warnings %}
<h3>Varování při importu</h3>
-
<div class="alert alert-warning" role="alert" style="white-space: pre-line">{{ "" -}}
{% for e in warnings %}
{{ e }}
+{% if confirm_only %}
+Varování nebránila dokončení importu.
+{% endif %}
{% endfor %}
</div>
{% endif %}
{% if errs %}
<h3>Chyby při importu</h3>
-
<div class="alert alert-danger" role="alert" style="white-space: pre-line">{{ "" -}}
{% for e in errs %}
{{ e }}
+Jelikož došlo k chybám, import nebyl proveden.
{% endfor %}
</div>
{% endif %}
-{% endblock %}
+
+{% if confirm_only %}
+{# Pokud import proběhl správně, ale vypsal warningy, nezobrazujeme formulář, jen tlačítko na potvrzení. #}
+
+<div class="btn-group">
+<a class="btn btn-primary" href='{{ redirect_url }}'>Hotovo</a>
+</div>
+
+{% else %}
{% block import_info %}{% endblock %}
@@ -45,5 +55,6 @@ Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.plac
</div>
</form>
+{% endif %}
{% endblock %}
--
GitLab