Skip to content
Snippets Groups Projects

Výsledkovka pomocí mo.web.table

Closed Jiří Setnička requested to merge jirka/table into master
1 file
+ 4
6
Compare changes
  • Side-by-side
  • Inline
@@ -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ů
)
)
Loading