Skip to content
Snippets Groups Projects

Publikace výsledkovky na web MO

Merged Jiří Kalvoda requested to merge jk/vysledkovka into devel
Compare and Show latest version
1 file
+ 8
14
Compare changes
  • Side-by-side
  • Inline
+ 8
14
@@ -156,7 +156,7 @@ def handle_snapshot_score(the_job: TheJob):
#
# Job export_score_to_mo_web: Exportuje výsledkovou listinu na stránky matematické olympiády
#
# Běží pod systémovým uživatelem (například proto, aby nebylo možné job smazat před tím, než začne běžet)
# Běží pod systémovým uživatelem. (Například proto, aby nebylo možné job smazat před tím, než začne běžet.)
#
# Vstupní JSON:
# { 'scoretable_id': int,
@@ -170,7 +170,7 @@ def handle_snapshot_score(the_job: TheJob):
def schedule_export_score_to_mo_web(score_table: db.ScoreTable) -> None:
the_job = TheJob()
job = the_job.create(db.JobType.export_score_to_mo_web, db.get_system_user())
job.description = 'Publikování výsledkové listiny na web MO'
job.description = 'Publikování výsledkové listiny na webu MO'
job.in_json = {"scoretable_id": score_table.scoretable_id}
the_job.submit()
@@ -180,18 +180,14 @@ def handle_export_score_to_mo_web(the_job: TheJob):
API_ENDPOINT_JSON = "/Redakce/Api/ScoreboardImporterApi/RawData"
API_ENDPOINT_PDF = "/Redakce/Api/ScoreboardImporterApi/PdfData"
job = the_job.job
assert job.in_json is not None
job = mo.util.assert_not_none(the_job.job)
sess = db.get_session()
scoretable_id: int = job.in_json["scoretable_id"] # type: ignore
score_table: db.ScoreTable = sess.query(db.ScoreTable).get(scoretable_id) # type: ignore
contest: db.Contest = sess.query(db.Contest).get(score_table.contest_id) # type: ignore
score_table: db.ScoreTable = mo.util.assert_not_none(sess.query(db.ScoreTable).get(scoretable_id))
contest: db.Contest = mo.util.assert_not_none(sess.query(db.Contest).get(score_table.contest_id))
round = contest.round
print(score_table.tasks)
print(score_table.rows)
json_tasks = [{
"code": t['code'] if type(t) == dict else t[0],
"name": t.get("name", None) if type(t) == dict else t[1],
@@ -209,8 +205,6 @@ def handle_export_score_to_mo_web(the_job: TheJob):
'status': "winner" if c['winner'] else "successful" if c['successful'] else None,
} for c in score_table.rows]
print(score_table.score_metadata)
def noneAs(x, default):
return x if x is not None else default
@@ -237,7 +231,7 @@ def handle_export_score_to_mo_web(the_job: TheJob):
reply = requests.post(url=config.MO_WEB_SERVER + API_ENDPOINT_JSON + params_str, json=json)
if reply.status_code != 200:
err_text = f"Export výsledkovky na web MO: Server odpověděl {reply.status_code}: {reply.text}"
err_text = f"Export výsledkovky na webu MO: Server odpověděl {reply.status_code}: {reply.text}"
mo.util.log(
type=db.LogType.contest,
what=contest.contest_id,
@@ -259,7 +253,7 @@ def handle_export_score_to_mo_web(the_job: TheJob):
reply = requests.post(url=config.MO_WEB_SERVER + API_ENDPOINT_PDF + params_str, data=file, headers=headers)
if reply.status_code != 200:
err_text = f"Export výsledkovky na web MO: Server odpověděl {reply.status_code}: {reply.text}"
err_text = f"Export výsledkovky na webu MO: Server odpověděl {reply.status_code}: {reply.text}"
mo.util.log(
type=db.LogType.contest,
what=contest.contest_id,
@@ -283,4 +277,4 @@ def handle_export_score_to_mo_web(the_job: TheJob):
},
)
sess.commit()
job.result = 'Publikování výsledkové listiny na web MO: Hotovo'
job.result = 'Publikování výsledkové listiny na webu MO: Hotovo'
Loading