diff --git a/mo/imports.py b/mo/imports.py index f0eedb2c30a10d70f18f09c794192f7106895974..d4be97126dbc60c3341da69a2b539ae3932a8697 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -469,6 +469,7 @@ class ContestImport(Import): def setup(self): assert self.round is not None + assert not self.round.is_subround() def import_row(self, r: mo.csv.Row): assert isinstance(r, ContestImportRow) @@ -665,11 +666,16 @@ class PointsImport(Import): return self.error('Soutěžící v tomto kole soutěží vícekrát, neumím zpracovat') pion, sol = pion_sols[0] + if not self.round.is_subround(): + contest = pion.contest + else: + contest = sess.query(db.Contest).filter_by(round=self.round, master_contest_id=pion.contest_id).one() + if self.contest is not None: - if pion.contest != self.contest: + if contest != self.contest: return self.error('Soutěžící nesoutěží v ' + self.round.get_level().name_locative('tomto', 'této', 'tomto')) - rights = self.gatekeeper.rights_for_contest(pion.contest) + rights = self.gatekeeper.rights_for_contest(contest) if not rights.can_edit_points(): return self.error('Nemáte právo na úpravu bodů') diff --git a/mo/web/templates/user_contest.html b/mo/web/templates/user_contest.html index 4c68aa93e191bb6c2494d1ba2a277abf2bda83e6..5f8e51537d955013e670638b2db61fdd201f31f1 100644 --- a/mo/web/templates/user_contest.html +++ b/mo/web/templates/user_contest.html @@ -90,8 +90,8 @@ Pokud si s tvorbou PDF nevíte rady, zkuste se podívat do <a href='https://docs <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) }}'> - {{ (sol.final_feedback_obj.uploaded_at if sol.final_feedback_obj else None)|timeformat }} - ({{ sol.final_feedback_obj.pages|inflected('strana', 'strany', 'stran') }}) + {{ sol.final_feedback_obj.uploaded_at|timeformat }} + {% if sol.final_feedback_obj.pages != None %}({{ sol.final_feedback_obj.pages|inflected('strana', 'strany', 'stran') }}){% endif %} </a> {% endif %} {% if sol.note %}<span title="Existuje poznámka k řešení, viz detail úlohy">🛈</span>{% endif %} diff --git a/mo/web/templates/user_contest_task.html b/mo/web/templates/user_contest_task.html index acb0086de6868f64c8227b524c28f36b87e5d43a..2521f054dc8d76297b3ca6e24943574a13c635fa 100644 --- a/mo/web/templates/user_contest_task.html +++ b/mo/web/templates/user_contest_task.html @@ -47,7 +47,7 @@ <tr><th>Získané body:<td>{% if sol.points %}{{ sol.points|inflected("bod", "body", "bodů") }}{% else %}nebyly přiděleny žádné body{% endif %} {% if sol.final_feedback_obj %} <tr><th>Opravené řešení:<td><a class="btn btn-xs btn-primary" href="{{ url_for('user_paper', contest_id=contest.contest_id, paper_id=sol.final_feedback_obj.paper_id) }}">Zobrazit</a> - ({{ sol.final_feedback_obj.pages|inflected('stránka', 'stránky', 'stránek') }}, {{ sol.final_feedback_obj.bytes }} bajtů) + {% if sol.final_feedback_obj.pages != None %}({{ sol.final_feedback_obj.pages|inflected('stránka', 'stránky', 'stránek') }}, {{ sol.final_feedback_obj.bytes }} bajtů){% endif %} {% endif %} {% if sol.note %} <tr><th>Poznámka od organizátorů:<td style="white-space: pre-line;">{{ sol.note }} diff --git a/setup.py b/setup.py index 549c6edbc0b694664fcb2e8e0cd9a76597fd98f0..385f136b41905012fba661073b7b9e6dea4004b0 100644 --- a/setup.py +++ b/setup.py @@ -13,6 +13,7 @@ setuptools.setup( 'bin/create-round', 'bin/create-user', 'bin/export-orgs', + 'bin/fix-submits', 'bin/import-points', 'bin/merge-users', 'bin/p-score',