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

Práva: Výsledkovka

parent ee6d0194
No related branches found
No related tags found
1 merge request!17Výsledkovka pomocí mo.web.table
This commit is part of merge request !19. Comments created here will be created in the context of that merge request.
...@@ -4,9 +4,8 @@ from sqlalchemy.orm import joinedload ...@@ -4,9 +4,8 @@ from sqlalchemy.orm import joinedload
from typing import List, Tuple, Optional, Dict from typing import List, Tuple, Optional, Dict
import werkzeug.exceptions import werkzeug.exceptions
from mo import rights
import mo.db as db import mo.db as db
from mo.rights import Rights from mo.rights import Right
from mo.web import app from mo.web import app
...@@ -23,13 +22,12 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None): ...@@ -23,13 +22,12 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None):
db.User, db.Participation.user_id == db.User.user_id db.User, db.Participation.user_id == db.User.user_id
).filter(db.User.is_test == False) ).filter(db.User.is_test == False)
rr = Rights(g.user)
if round_id: if round_id:
contest = None contest = None
round = sess.query(db.Round).get(round_id) round = sess.query(db.Round).get(round_id)
if not round: if not round:
raise werkzeug.exceptions.NotFound() raise werkzeug.exceptions.NotFound()
rr.get_for_round(round) rr = g.gatekeeper.rights_for_round(round)
contest_subq = sess.query(db.Contest.contest_id).filter_by(round=round) contest_subq = sess.query(db.Contest.contest_id).filter_by(round=round)
user_id_subq = user_id_subq.filter(db.Participation.contest_id.in_(contest_subq)) user_id_subq = user_id_subq.filter(db.Participation.contest_id.in_(contest_subq))
else: else:
...@@ -41,7 +39,7 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None): ...@@ -41,7 +39,7 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None):
contest_subq = [contest_id] contest_subq = [contest_id]
user_id_subq = user_id_subq.filter(db.Participation.contest == contest) user_id_subq = user_id_subq.filter(db.Participation.contest == contest)
if not rr.have_right(rights.Right.view_submits): if not rr.have_right(Right.view_submits):
raise werkzeug.exceptions.Forbidden() raise werkzeug.exceptions.Forbidden()
tasks_subq = sess.query(db.Task.task_id).filter_by(round=round) tasks_subq = sess.query(db.Task.task_id).filter_by(round=round)
...@@ -130,6 +128,6 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None): ...@@ -130,6 +128,6 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None):
'org_score.html', 'org_score.html',
contest=contest, round=round, tasks=tasks, contest=contest, round=round, tasks=tasks,
results=results, results=results,
can_edit_points=rr.have_right(rights.Right.edit_points) and round.state == db.RoundState.grading, can_edit_points=rr.have_right(Right.edit_points) and round.state == db.RoundState.grading,
db=db, # kvůli hodnotám enumů db=db, # kvůli hodnotám enumů
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment