Skip to content
Snippets Groups Projects

Stránka účastníka v soutěži

Merged Jiří Setnička requested to merge jirka/contest_user into devel
1 file
+ 36
22
Compare changes
  • Side-by-side
  • Inline
+ 36
22
@@ -38,33 +38,49 @@ class OrderCell(Cell):
class SolPointsCell(Cell):
url: str
exists: bool
points: Optional[int]
contest_id: int
sol: Optional[db.Solution]
def __init__(self, url: str):
self.url = url
self.exists = False
self.points = None
def __init__(self, contest_id: int):
self.contest_id = contest_id
self.sol = None
def __str__(self) -> str:
if not self.exists:
if not self.sol:
return ''
elif self.points is None:
elif self.sol.points is None:
return '?'
return str(self.points)
return str(self.sol.points)
def set_points(self, points: Optional[int]):
self.exists = True
self.points = points
def set_sol(self, sol: db.Solution):
self.sol = sol
def to_html(self) -> str:
if not self.exists:
if not self.sol:
return '<td>–'
a = f'<td><a href="{self.url}" title="Detail řešení">'
if self.points is None:
return a + '<span class="unknown">?</span></a>'
return a + str(self.points) + '</a>'
elif self.sol.points is None:
points = '<span class="unknown">?</span></a>'
else:
points = str(self.sol.points)
if self.sol.final_feedback_obj:
url = url_for(
'org_submit_paper',
contest_id=self.contest_id,
paper_id=self.sol.final_feedback,
filename=mo.web.util.task_paper_filename(self.sol.final_feedback_obj)
)
return f'<td><a href="{url}" title="Zobrazit finální opravu">{points}</a>'
elif self.sol.final_submit_obj:
url = url_for(
'org_submit_paper',
contest_id=self.contest_id,
paper_id=self.sol.final_submit,
filename=mo.web.util.task_paper_filename(self.sol.final_submit_obj)
)
return f'<td><a href="{url}" title="Zobrazit finální řešení od účastníka">{points}</a>'
else:
return f'<td>{points}' # no paper no link
@app.route('/org/contest/r/<int:round_id>/score')
@@ -174,12 +190,10 @@ def org_score(round_id: Optional[int] = None, contest_id: Optional[int] = None):
'birth_year': pant.birth_year,
})
for task in tasks:
row.keys[f'task_{task.task_id}'] = SolPointsCell(
url_for('org_submit_list', contest_id=pion.contest_id, user_id=user.user_id, task_id=task.task_id)
)
row.keys[f'task_{task.task_id}'] = SolPointsCell(contest_id=pion.contest_id)
rows_map[user.user_id] = row
for sol in sols:
rows_map[sol.user_id].keys[f'task_{sol.task_id}'].set_points(sol.points)
rows_map[sol.user_id].keys[f'task_{sol.task_id}'].set_sol(sol)
if sol.points:
rows_map[sol.user_id].keys['total_points'] += sol.points
Loading