From db8231d3aa161e2b86ef0d92b432cc8d89fd16d6 Mon Sep 17 00:00:00 2001
From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Date: Sun, 3 Oct 2021 22:16:45 +0200
Subject: [PATCH] =?UTF-8?q?Reforma=20import=C5=AF:=20Str=C3=A1nky=20import?=
=?UTF-8?q?=C5=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mo/web/org_contest.py | 2 ++
mo/web/org_users.py | 21 ++++++++++++--
mo/web/templates/org_generic_import.html | 29 +++++++++++---------
mo/web/templates/org_global_orgs_import.html | 21 ++++++++++++++
mo/web/templates/org_orgs_import.html | 27 ++++++++++++++++++
mo/web/templates/org_users_import.html | 24 ++++++++++++++++
6 files changed, 108 insertions(+), 16 deletions(-)
create mode 100644 mo/web/templates/org_global_orgs_import.html
create mode 100644 mo/web/templates/org_orgs_import.html
create mode 100644 mo/web/templates/org_users_import.html
diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 0efa6ae5..0fb54398 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -439,6 +439,7 @@ def org_import_user(round_id: Optional[int] = None, hier_id: Optional[int] = Non
)
return generic_import_page(
form, imp, ctx.url_home(),
+ template='org_users_import.html',
ctx=ctx,
contest=contest,
round=round,
@@ -472,6 +473,7 @@ def org_import_org(round_id: Optional[int] = None, hier_id: Optional[int] = None
)
return generic_import_page(
form, imp, ctx.url_home(),
+ template='org_orgs_import.html',
ctx=ctx,
contest=contest,
round=round,
diff --git a/mo/web/org_users.py b/mo/web/org_users.py
index 9c57656a..395e7ff9 100644
--- a/mo/web/org_users.py
+++ b/mo/web/org_users.py
@@ -592,10 +592,25 @@ def org_user_participant_edit(user_id: int, year: int):
return render_template('org_user_participant_edit.html', user=user, year=year, form=form)
+
+class GlobalOrgsImportForm(ImportForm):
+ allow_change_user_to_org = wtforms.BooleanField("Povolit převádění účastníků na organizátory")
+ default_place = mo_fields.Place("Výchozí oblast")
+ default_cat = wtforms.StringField("Výchozí kategorie")
+ default_seq = wtforms.StringField("Výchozí kolo")
+ only_this_year = wtforms.BooleanField("Omezovat práva na aktuální ročník", default=True)
+
+
@app.route('/org/org/import', methods=('GET', 'POST'))
def org_orgs_import():
- form = ImportForm()
+ form = GlobalOrgsImportForm()
imp = None
if form.validate_on_submit():
- imp = GlobalOrgsImport(g.user)
- return generic_import_page(form, imp, url_for('org_orgs_import'))
+ imp = GlobalOrgsImport(
+ g.user,
+ default_place=form.default_place.place,
+ default_cat=form.default_cat.data,
+ default_seq=form.default_seq.data,
+ year=mo.config.CURRENT_YEAR if form.only_this_year.data else None
+ )
+ return generic_import_page(form, imp, url_for('org_orgs_import'), template='org_global_orgs_import.html')
diff --git a/mo/web/templates/org_generic_import.html b/mo/web/templates/org_generic_import.html
index 10a7655d..63fa3229 100644
--- a/mo/web/templates/org_generic_import.html
+++ b/mo/web/templates/org_generic_import.html
@@ -4,11 +4,9 @@
{% block title %}
Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.place.name_locative() }}{% else %}kola {{ round.round_code() }}{% endif %}{% endif %}
{% endblock %}
-{% block breadcrumbs %}
-{% if ctx %}{{ ctx.breadcrumbs(action="Import dat") }}{% else %}TODO{% endif %}
-{% endblock %}
{% block body %}
+{% block import_errs %}
{% if warnings %}
<h3>Varování při importu</h3>
@@ -28,19 +26,24 @@ Import dat {% if contest or round %}do {% if contest %}soutěže {{ contest.plac
{% endfor %}
</div>
{% endif %}
+{% endblock %}
-<p>Zde je možné importovat účastníky soutěže, dozor na soutěžních místech a opravovatele.
-Detaily fungování importu najdete v <a href='{{ url_for('doc_import') }}'>dokumentaci</a>.
+{% block import_info %}{% endblock %}
-{% if not contest %}
-<p><em>Pozor, zde se importuje do více soutěží najednou, takže je nutné uvádět
-kód oblasti. Nechcete raději importovat do konkrétní oblasti?</em>
-{% endif %}
+{% block import_help %}
+Detaily fungování importu najdete v <a href='{{ url_for('doc_import') }}'>dokumentaci</a>.
+{% endblock %}
-{% if default_place %}
-<p>Výchozí oblastí tohoto importu je: <a href='{{ url_for('org_place', id=default_place.place_id) }}'>{{ default_place.name }}</a>.</p>
-{% endif %}
+<form action="" method="post" class="form" enctype="multipart/form-data" role="form">
+{{ form.csrf_token }}
+{{ wtf.form_field(form.file) }}
+{{ wtf.form_field(form.fmt) }}
+{% block import_form %}{% endblock %}
+ <div class="btn-group">
+ {{ wtf.form_field(form.submit, class='btn btn-primary') }}
+ {{ wtf.form_field(form.get_template, class='btn btn-default') }}
+ </div>
+</form>
-{{ wtf.quick_form(form, form_type='simple', button_map={'submit': 'primary'}) }}
{% endblock %}
diff --git a/mo/web/templates/org_global_orgs_import.html b/mo/web/templates/org_global_orgs_import.html
new file mode 100644
index 00000000..82af6b71
--- /dev/null
+++ b/mo/web/templates/org_global_orgs_import.html
@@ -0,0 +1,21 @@
+{% extends "org_generic_import.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% block title %}
+ Import organizátorů
+{% endblock %}
+
+{% block import_info %}
+Toto je obecný import organzátorů. Možná raději chcete importovat přímo do nějakého kola, soutěže nebo soutěžního místa pomocí tlačítka ze stránek soutěže.
+{% endblock %}
+
+
+{% block import_form %}
+ {{ wtf.form_field(form.default_place) }}
+ {{ wtf.form_field(form.default_cat) }}
+ {{ wtf.form_field(form.default_seq) }}
+ {{ wtf.form_field(form.only_this_year) }}
+ {% if imp.cnt_change_user_to_org %}
+ {{ wtf.form_field(form.allow_change_user_to_org) }}
+ {% endif %}
+{% endblock %}
diff --git a/mo/web/templates/org_orgs_import.html b/mo/web/templates/org_orgs_import.html
new file mode 100644
index 00000000..488c32bf
--- /dev/null
+++ b/mo/web/templates/org_orgs_import.html
@@ -0,0 +1,27 @@
+{% extends "org_generic_import.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% block title %}
+Import organizátorů {% if contest or round %}do {% if contest %}soutěže {{ contest.place.name_locative() }}{% else %}kola {{ round.round_code() }}{% endif %}{% endif %}
+{% endblock %}
+{% block breadcrumbs %}
+{{ ctx.breadcrumbs(action="Import organizátorů") }}
+{% endblock %}
+
+{% block import_info %}
+{% if not contest %}
+<p><em>Pozor, zde se importuje do více soutěží najednou, takže je nutné uvádět
+kód oblasti. Nechcete raději importovat do konkrétní oblasti?</em></p>
+{% endif %}
+
+{% if default_place %}
+<p>Výchozí oblastí tohoto importu je: <a href='{{ url_for('org_place', id=default_place.place_id) }}'>{{ default_place.name }}</a>.</p>
+{% endif %}
+{% endblock %}
+
+
+{% block import_form %}
+ {% if imp.cnt_change_user_to_org %}
+ {{ wtf.form_field(form.allow_change_user_to_org) }}
+ {% endif %}
+{% endblock %}
diff --git a/mo/web/templates/org_users_import.html b/mo/web/templates/org_users_import.html
new file mode 100644
index 00000000..82d27d7e
--- /dev/null
+++ b/mo/web/templates/org_users_import.html
@@ -0,0 +1,24 @@
+{% extends "org_generic_import.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% block title %}
+Import soutěžících {% if contest or round %}do {% if contest %}soutěže {{ contest.place.name_locative() }}{% else %}kola {{ round.round_code() }}{% endif %}{% endif %}
+{% endblock %}
+{% block breadcrumbs %}
+{{ ctx.breadcrumbs(action="Import soutěžících") }}
+{% endblock %}
+
+{% block import_info %}
+{% if not contest %}
+<p><em>Pozor, zde se importuje do více soutěží najednou, takže je nutné uvádět
+kód oblasti. Nechcete raději importovat do konkrétní oblasti?</em></p>
+{% endif %}
+
+{% if default_place %}
+<p>Výchozí oblastí tohoto importu je: <a href='{{ url_for('org_place', id=default_place.place_id) }}'>{{ default_place.name }}</a>.</p>
+{% endif %}
+{% endblock %}
+
+
+{% block import_form %}
+{% endblock %}
--
GitLab