Skip to content
Snippets Groups Projects

Draft: Dělená kola

Closed Jiří Setnička requested to merge jirka/delena-kola into devel
3 files
+ 235
15
Compare changes
  • Side-by-side
  • Inline
Files
3
  • 3f31c851
    Při vytvoření podkola se vytvoří i všechny podsoutěže, při mazání se zase smaží
    a při vytvoření nové soutěže se tato vytvoří i v podkolech.
    
    Mazat podkola se dá jen, pokud nemá žádné úlohy (což tranzitivně zaručuje i žádné
    řešení, body, ...).
    
    V podkolech se nedají editovat soutěže nebo vytvářet další podkola.
    
    Issue #178
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}{{ round.name }} {{ round.round_code() }}{% endblock %}
{% block title %}{{ round.master.name }} {{ round.master.round_code() }}{% if round.is_subround() %} (podkolo {{ round.name }}){% endif %}{% endblock %}
{% block breadcrumbs %}
{{ contest_breadcrumbs(round=round) }}
{% endblock %}
@@ -12,10 +12,14 @@
<tr><td>Ročník<td>{{ round.year }}
<tr><td>Kategorie<td>{{ round.category }}
<tr><td>Pořadí<td>{{ round.seq }}
<tr><td>Název<td>{{ round.name }}
<tr><td>Oblast<td>{{ level_names[round.level] }}
<tr><td>Stav<td class='rstate-{{round.state.name}}'>{{ round.state.friendly_name() }}
<tr><td>Vaše role<td>{% if roles %}{{ roles|join(", ") }}{% else %}–{% endif %}
{% if round.is_subround() %}
<tr><td>Nadřazené kolo:<td><a href="{{ url_for('org_round', id=round.master_round_id) }}">{{ round.master.name }} {{ round.master.round_code() }} </a>
{% endif %}
<tr><th colspan=2><h4>Nastavení kola:</h4>
<tr><td>Název<td>{{ round.name }}
<tr><td>Stav<td class='rstate-{{round.state.name}}'>{{ round.state.friendly_name() }}
<tr><td>Účastníci vidí zadání od<td>{{ round.ct_tasks_start|timeformat }}
<tr><td>Účastníci odevzdávají do<td>{{ round.ct_submit_end|timeformat }}
<tr><td>Dozor vidí zadání od<td>{{ round.pr_tasks_start|timeformat }}
@@ -30,12 +34,20 @@
{% else %}
{% endif %}
{% if not round.is_subround() %}
<tr><td>Výsledková listina<td>{{ round.score_mode.friendly_name() }}
<tr><td>Hranice bodů pro vítěze<td>{{ round.score_winner_limit|none_value(Markup('<i>nenastaveno</i>')) }}
<tr><td>Hranice bodů pro úspěšné řešitele<td>{{ round.score_successful_limit|none_value(Markup('<i>nenastaveno</i>')) }}
{% endif %}
</table>
<div class="btn-group">
{% if round.is_subround() %}
<a class="btn btn-primary" href='{{ url_for('org_round_list', id=round.master_round_id) }}'>Seznam účastníků nadřazeného kola</a>
{% if round.master.state in [RoundState.grading, RoundState.closed] %}
<a class="btn btn-primary" href='{{ url_for('org_score', round_id=round.master_round_id) }}'>Výsledky nadřazeného kola</a>
{% endif %}
{% else %}
<a class="btn btn-primary" href='{{ url_for('org_round_list', id=round.round_id) }}'>Seznam účastníků</a>
{% if round.state in [RoundState.grading, RoundState.closed] %}
<a class="btn btn-primary" href='{{ url_for('org_score', round_id=round.round_id) }}'>Výsledky</a>
@@ -43,6 +55,7 @@
{% if can_manage_contestants %}
<a class="btn btn-default" href='{{ url_for('org_round_import', id=round.round_id) }}'>Importovat data</a>
{% endif %}
{% endif %}
{% if can_manage_round %}
<a class="btn btn-default" href='{{ url_for('org_round_edit', id=round.round_id) }}'>Editovat nastavení kola</a>
{% endif %}
@@ -50,8 +63,71 @@
<a class="btn btn-default" href='{{ log_url('round', round.round_id) }}'>Historie</a>
{% endif %}
</div>
<br><br>
{% if not round.is_subround() %}
<div class="box-frame">
<h3>Podkola</h3>
{% if subrounds and subrounds|length > 1 %}
<table class=data>
<thead>
<tr>
<th rowspan=2>Podkolo
<th rowspan=2>Počet úloh
<th rowspan=2>Stav
<th colspan=2>Účastníci
<th colspan=2>Dozor
<th rowspan=2>Akce
<tr>
<th>Zadání od
<th>Odevzdávání do
<th>Zadání od
<th>Odevzdávání do
</thead>
{% for (subround, tasks_count) in subrounds %}
<tr>
<td>{% if subround == round %}
<b>Toto kolo: {{ subround.name }}</b>
{% else %}
<a href="{{ url_for('org_round', id=subround.round_id) }}">{{ subround.name }}</a>
{% endif %}
<td>{{ tasks_count }}
<td class='rstate-{{subround.state.name}}'>{{ subround.state.friendly_name() }}
<td>{{ subround.ct_tasks_start|timeformat }}
<td>{{ subround.ct_submit_end|timeformat }}
<td>{{ subround.pr_tasks_start|timeformat }}
<td>{{ subround.pr_submit_end|timeformat }}
<td><div class="btn-group">
{% if subround != round %}
<a class="btn btn-xs btn-primary" href="{{ url_for('org_round', id=subround.round_id) }}">Detail</a>
{% if can_manage_round and tasks_count == 0 %}
<form action="" method="POST" onsubmit="return confirm('Opravdu nenávratně smazat?')" class="btn-group">
{{ form_delete_subround.csrf_token() }}
<input type="hidden" name="delete_subround_id" value="{{ subround.round_id }}">
<button type="submit" class="btn btn-xs btn-danger">Smazat podkolo</button>
</form>
{% endif %}
{% endif %}
</div>
{% endfor %}
</table>
{% else %}
<p><i>Žádná podkola nebyla založena, vše se koná pod hlavním kolem.</i></p>
{% endif %}
{% if can_manage_round %}
<form action="" method="POST" class="form-inline">
{{ form_add_subround.csrf_token() }}
{{ wtf.form_field(form_add_subround.name) }}
{{ wtf.form_field(form_add_subround.create_subround) }}
</form>
{% endif %}
</div>
{% endif %}
<div class="box-frame">
<h3>Soutěže</h3>
{% if round.is_subround() %}<p><i>Soutěže jsou synchronizovány s nadřazeným kolem.</i></p>{% endif %}
{% if contests_counts %}
<table class=data>
<thead>
@@ -76,14 +152,16 @@
<p>Zatím nebyly založeny v žádné oblasti.
{% endif %}
{% if can_add_contest %}
{% if not round.is_subround() and can_add_contest %}
<form action="" method="POST" class="form-inline">
{{ form_add_contest.csrf_token() }}
{{ wtf.form_field(form_add_contest.place_code) }}
{{ wtf.form_field(form_add_contest.create_contest) }}
</form>
{% endif %}
</div>
<div class="box-frame">
<h3>Úlohy</h3>
{% if tasks %}
<table class=data>
@@ -117,7 +195,7 @@
</div>
{% endif %}
{% if can_handle_submits or can_upload %}
<td><dic class="btn-group">
<td><div class="btn-group">
{% if can_handle_submits %}
<a class="btn btn-xs btn-primary" href="{{ url_for('org_round_task_download', round_id=round.round_id, task_id=task.task_id) }}">Stáhnout ZIP</a>
{% endif %}
@@ -138,5 +216,6 @@
{% if can_manage_round %}
<a class="btn btn-primary right-float" href="{{ url_for('org_round_task_new', id=round.round_id) }}">Nová úloha</a>
{% endif %}
</div>
{% endblock %}
Loading