Skip to content
Snippets Groups Projects
Commit b2ade683 authored by Martin Mareš's avatar Martin Mareš
Browse files

Protokoly: UI

parent dfb82bf6
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !81. Comments created here will be created in the context of that merge request.
......@@ -1638,6 +1638,19 @@ def org_contest_edit(id: int):
class ProtoGenForm(FlaskForm):
num_universal = wtforms.IntegerField(
'Univerzálních listů',
default=0,
validators=[validators.NumberRange(min=0, max=1000)],
description='Počet listů s univerzální hlavičkou, kterými může začínat řešení libovolné úlohy. ' +
'Při scanování se třídí ručně.'
)
num_blank = wtforms.IntegerField(
'Pokračovacích listů',
default=0,
validators=[validators.NumberRange(min=0, max=1000)],
description='Počet listů na pokračování řešení.',
)
gen_protos = wtforms.SubmitField('Vytvořit protokoly')
......@@ -1646,9 +1659,23 @@ class ProtoGenForm(FlaskForm):
def org_contest_protocols(id: int, site_id: Optional[int] = None):
sc = get_solution_context(id, None, None, site_id)
gen_form = ProtoGenForm()
class PGF(ProtoGenForm):
pass
tasks = db.get_session().query(db.Task).filter_by(round=sc.round).order_by(db.Task.code).all()
for t in tasks:
setattr(PGF, f'task_{t.task_id}', wtforms.BooleanField(t.code, default=True))
gen_form = PGF()
gen_task_fields = [f for f in gen_form if f.name.startswith('task_')]
if gen_form.validate_on_submit() and gen_form.gen_protos.data:
mo.jobs.protocols.schedule_create_protocols(sc.contest, sc.site, g.user)
mo.jobs.protocols.schedule_create_protocols(
sc.contest, sc.site, g.user,
tasks=[t for t in tasks if getattr(gen_form, f'task_{t.task_id}').data],
num_universal=gen_form.num_universal.data,
num_blank=gen_form.num_blank.data,
)
flash('Výroba prototokolů zahájena.', 'success')
return redirect(url_for('org_jobs'))
......@@ -1658,4 +1685,5 @@ def org_contest_protocols(id: int, site_id: Optional[int] = None):
round=sc.round,
site=sc.site,
gen_form=gen_form,
gen_task_fields=gen_task_fields,
)
......@@ -13,6 +13,23 @@ Protokoly pro {{ round.name|lower }} kategorie {{ round.category }}
<p>Zde je možné vytvořit PDF s formuláři protokolů pro všechny soutěžící. Každý
formulář je opatřen unikátním QR kódem. FIXME: Dovysvětlit.
{{ wtf.quick_form(gen_form, button_map={'gen_protos': 'primary'}) }}
{% macro field(f) %}
{{ wtf.form_field(f, form_type='horizontal', horizontal_columns=('lg', 3, 7), button_map={'gen_protos': 'primary'}) }}
{% endmacro %}
<form action="" method=POST class="form form-horizontal" role="form">
{{ gen_form.csrf_token }}
{% if gen_task_fields %}
<div class='form-group'>
<label class='control-label col-lg-3' for='{{ gen_task_fields[0].id }}'>Úlohy</label>
<div class='col-lg-7'>
{% for f in gen_task_fields %}
{{ wtf.form_field(f) }}
{% endfor %}
</div>
</div>
{% endif %}
{{ field(gen_form.num_universal) }}
{{ field(gen_form.num_blank) }}
{{ field(gen_form.gen_protos) }}
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment