Skip to content
Snippets Groups Projects

Prázdné protokoly

Files

+ 5
5
@@ -28,7 +28,7 @@ import mo.jobs.protocols
import mo.jobs.submit
from mo.rights import Right, RoundRights
import mo.util
from mo.util import assert_not_none
from mo.util import assert_not_none, GPAction
from mo.util_format import inflect_number, inflect_by_number, inflect_with_number
from mo.web import app
import mo.web.fields as mo_fields
@@ -1090,7 +1090,7 @@ def org_contest_task(ct_id: int, task_id: int, site_id: Optional[int] = None):
return False
# Parsování bodů
action_for: Dict[db.Participation, str] = {}
action_for: Dict[db.Participation, GPAction] = {}
points_for: Dict[db.Participation, Decimal] = {}
for pion, sol in rows:
gen_pts = request.form.get(f"points_{pion.user_id}")
@@ -1109,7 +1109,7 @@ def org_contest_task(ct_id: int, task_id: int, site_id: Optional[int] = None):
# Aktualizuje řešení, zkontroluje práva a případně vrátí chybovou hlašku.
# Vyhýbáme se všemu, co nejde rollbacknout, takže logování do souboru necháme na později.
if not sol:
if action == 'X':
if action == GPMode.no_solution:
return None
# Řešení neexistuje a chceme ho založit
if not ctx.rights.can_create_solutions():
@@ -1125,7 +1125,7 @@ def org_contest_task(ct_id: int, task_id: int, site_id: Optional[int] = None):
},
)
new_sols.append(sol)
elif action == 'X':
elif action == GPMode.no_solution:
# Řešení existuje a chceme ho zrušit
if sol.final_submit or sol.final_feedback:
return 'Nelze smazat řešení, ke kterému již byl odevzdán soubor'
@@ -1143,7 +1143,7 @@ def org_contest_task(ct_id: int, task_id: int, site_id: Optional[int] = None):
deleted_sols.append(sol)
return None
is_empty = (action == 'P')
is_empty = (action == GPMode.empty)
if sol.points != points or sol.is_empty != is_empty:
# Chceme změnit počet bodů nebo prázdnost protokolu (po případném založení řešení)
if not ctx.rights.can_edit_points():
Loading