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

Opraveno: Účastnické rozhraní

parent 6a4983a6
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !113. Comments created here will be created in the context of that merge request.
......@@ -8,13 +8,11 @@ import bleach
from bleach.sanitizer import ALLOWED_TAGS
import markdown
import os
from sqlalchemy import func
from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.sql.functions import coalesce
from sqlalchemy.orm import joinedload
from typing import Optional, List, Dict, Tuple, Set
import werkzeug.exceptions
import wtforms
from wtforms import validators, ValidationError
from wtforms import validators
from wtforms.widgets.html5 import NumberInput
import mo.config as config
......
......@@ -4,7 +4,7 @@
{% set state = contest.ct_state() %}
{% block head %}
{% if contest.round.has_messages %}
{% if round.has_messages %}
<script src="{{ asset_url('js/news-reloader.js') }}" type="text/javascript"></script>
{% endif %}
{% endblock %}
......@@ -69,29 +69,33 @@ Pokud si s tvorbou PDF nevíte rady, zkuste se podívat do <a href='https://docs
{% elif state == RoundState.grading %}
<p>Odevzdávání bylo ukončeno. Vyčkejte prosím, až úlohy opravíme.
{% elif state == RoundState.closed %}
{% elif state in [RoundState.graded, RoundState.closed] %}
<p>Soutěžní kolo bylo ukončeno, níže si můžete prohlédnout svá ohodnocená a okomentovaná řešení.
{% if contest.ct_state() == RoundState.closed and contest.scoretable_id %}
{% if contest.scoretable_id %}
Také je již zveřejněna <strong><a href="{{ url_for('user_contest_score', id=contest.contest_id) }}">výsledková listina</a></strong>.
{% endif %}
<p>Během několika dnů očekávejte uzavření kola{% if not contest.scoretable_id %}a zveřejnění oficiálních výsledkových listin{% endif %}.
{% if state == RoundState.graded %}
<p>Pokud máte k opravě úloh připomínky, ozvěte se prosím organizátorům tohoto kola.
{% endif %}
{% else %}
<p>Soutěž se nachází v neznámém stavu. To by se nemělo stát :)
{% endif %}
{% if state != RoundState.preparing %}
<h3>Úlohy</h3>
{% if contest.ct_task_statement_available() %}
<p>Můžete si stáhnout <a href='{{ url_for('user_task_statement', id=contest.contest_id) }}'>zadání úloh</a>.
{% endif %}
<h3>Úlohy</h3>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Úloha
<th>Odevzdáno
{% if state == RoundState.closed %}
{% if state in [RoundState.graded, RoundState.closed] %}
<th>Opraveno
<th>Body
{% endif %}
......@@ -112,7 +116,7 @@ Také je již zveřejněna <strong><a href="{{ url_for('user_contest_score', id=
{% else %}
<td>
{% endif %}
{% if state == RoundState.closed %}
{% if state in [RoundState.graded, RoundState.closed] %}
<td>
{% if sol.final_feedback_obj %}
<a href='{{ url_for('user_paper', contest_id=contest.contest_id, paper_id=sol.final_feedback_obj.paper_id) }}'>
......
......@@ -58,7 +58,7 @@
<p>Žádné řešení k této úloze nebylo odevzdáno.</p>
{% elif state == RoundState.grading %}
<p>Odevzdávání bylo ukončeno. Vyčkejte prosím, až úlohu opravíme.
{% elif state == RoundState.closed %}
{% elif state in [RoundState.graded, RoundState.closed] %}
<h3>Výsledky</h3>
<p>Soutěžní kolo bylo ukončeno a úloha opravena a ohodnocena.
......@@ -80,7 +80,7 @@
<h3>Historie vašich řešení</h3>
{% if papers %}
{% if state == RoundState.closed and papers|length > 1 %}
{% if state in [RoundState.graded, RoundState.closed] and papers|length > 1 %}
<p>Podbarvením je zvýrazněno řešení, podle kterého vám byly přiděleny body.</p>
{% endif %}
......@@ -95,7 +95,7 @@
<th>Akce
<tbody>
{% for p in papers %}
<tr{% if state == RoundState.closed and papers|length > 1 and p.paper_id == sol.final_submit %} class="sol-active"{% endif %}>
<tr{% if state in [RoundState.graded, RoundState.closed] and papers|length > 1 and p.paper_id == sol.final_submit %} class="sol-active"{% endif %}>
<td>{{ p.uploaded_at|timeformat }}
<td>{% if p.is_broken() %}nekorektní PDF{% else %}{{ p.pages|or_dash }}{% endif %}
<td>{{ p.bytes|or_dash }}
......
......@@ -30,13 +30,13 @@
Odevzdat řešení
{% elif state == RoundState.grading %}
Odevzdaná řešení
{% elif state == RoundState.closed %}
{% elif state in [RoundState.graded, RoundState.closed] %}
Prohlédnout opravy
{% else %}
Detail kola
{% endif %}
</a>
{% if contest.ct_state() == RoundState.closed and contest.scoretable_id %}
{% if contest.ct_state() in [RoundState.graded, RoundState.closed] and contest.scoretable_id %}
<a class='btn btn-xs btn-success' href="{{ url_for('user_contest_score', id=contest.contest_id) }}">Výsledková listina</a>
{% endif %}
{% endfor %}
......
......@@ -479,9 +479,9 @@ def user_paper(contest_id: int, paper_id: int):
raise werkzeug.exceptions.Forbidden()
if paper.type == db.PaperType.solution:
allowed_states = [db.RoundState.running, db.RoundState.grading, db.RoundState.closed]
allowed_states = [db.RoundState.running, db.RoundState.grading, db.RoundState.graded, db.RoundState.closed]
elif paper.type == db.PaperType.feedback:
allowed_states = [db.RoundState.closed]
allowed_states = [db.RoundState.graded, db.RoundState.closed]
else:
assert False
......@@ -541,7 +541,7 @@ def user_contest_score(id: int):
# Výsledkovku zobrazíme jen pokud je soutěž již ukončená
state = contest.ct_state()
if not contest.scoretable or state != db.RoundState.closed:
if not contest.scoretable or state not in [db.RoundState.graded, db.RoundState.closed]:
raise werkzeug.exceptions.NotFound()
columns, table_rows = scoretable_construct(contest.scoretable, format != "")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment