Skip to content
Snippets Groups Projects

Publikace výsledkovky na web MO

Compare and Show latest version
1 file
+ 49
41
Compare changes
  • Side-by-side
  • Inline
+ 49
41
@@ -137,7 +137,6 @@ def handle_snapshot_score(the_job: TheJob):
rows=snapshot_rows,
pdf_file=pdf_file,
score_metadata=snapshot_metadata,
pdf_file=pdf_file,
)
sess.add(score_table)
sess.flush()
@@ -194,6 +193,21 @@ def handle_export_score_to_mo_web(the_job: TheJob):
assert round.round_type is not None
def error(err_text: str, data_format: str, more_details={}):
mo.util.log(
type=db.LogType.contest,
what=contest.contest_id,
details={
'action': 'score-export-to-mo-web',
'scoretable_id': score_table.scoretable_id,
'status': 'fail',
'format': data_format,
**more_details
},
)
sess.commit()
raise Exception(f"Publikování výsledkové listiny ({data_format}) na webu MO: {err_text}")
json_tasks = [{
"code": t['code'] if type(t) == dict else t[0],
"name": t.get("name", None) if type(t) == dict else t[1],
@@ -232,59 +246,53 @@ def handle_export_score_to_mo_web(the_job: TheJob):
'region': contest.place.nuts,
}
auth = requests.auth.HTTPBasicAuth(config.MO_WEB_LOGIN, config.MO_WEB_PASSWD)
reply = requests.post(
url=config.MO_WEB_SERVER + API_ENDPOINT_JSON,
params=params,
json=json,
try:
reply = requests.post(
url=config.MO_WEB_SERVER + API_ENDPOINT_JSON,
params=params,
json=json,
auth=auth,
)
)
except Exception as e:
error(
str(e),
"json",
{"exception": str(e)},
)
if reply.status_code != 200:
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,
details={
'action': 'score-export-to-mo-web',
'scoretable_id': score_table.scoretable_id,
'status': 'fail-json',
'status_code': reply.status_code,
'reply_text': reply.text,
},
error(
f"Server odpověděl {reply.status_code}: {reply.text}",
"json",
{'status_code': reply.status_code, 'reply_text': reply.text},
)
sess.commit()
raise Exception(err_text)
if score_table.pdf_file is not None:
file = open(os.path.join(mo.util.data_dir('score'), score_table.pdf_file),'rb')
headers = {'Content-Type': "application/pdf"}
reply = requests.post(
url=config.MO_WEB_SERVER + API_ENDPOINT_PDF,
params=params,
data=file,
headers=headers,
auth=auth,
)
try:
reply = requests.post(
url=config.MO_WEB_SERVER + API_ENDPOINT_PDF,
params=params,
data=file,
headers=headers,
auth=auth,
)
except Exception as e:
error(
str(e),
"pdf",
{"exception": str(e)},
)
if reply.status_code != 200:
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,
details={
'action': 'score-export-to-mo-web',
'scoretable_id': score_table.scoretable_id,
'status': 'fail-pdf',
'status_code': reply.status_code,
'reply_text': reply.text,
},
error(
f"Server odpověděl {reply.status_code}: {reply.text}",
"pdf",
{'status_code': reply.status_code, 'reply_text': reply.text},
)
sess.commit()
raise Exception(err_text)
mo.util.log(
type=db.LogType.contest,
Loading