diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 0efa6ae578aec5a2f7a7bc5884174efee8103caf..0fb543985a1bf4e67c54a81cafe0a6b7f530c7b4 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 9c57656a23231ff6935f08c0e9184240815a9f78..395e7ff9f933ee22637bef9c6279a9cc130ddc3e 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 10a7655d071a2379cc437419aa3fb217386ef091..63fa322964dd438989fc6d14194554d6d65e436b 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 0000000000000000000000000000000000000000..82af6b71add8b09bf6e763baca39c21feecd43fe --- /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 0000000000000000000000000000000000000000..488c32bf318a8a4ca1136c2adbaedfec2797cc7a --- /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 0000000000000000000000000000000000000000..82d27d7e2ca53cd63d8e6955d6f3194cd89863e4 --- /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 %}