From e426c1ceb7a5a3c2e79466999353dc8dffdac0ad Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sat, 16 Jan 2021 15:56:12 +0100
Subject: [PATCH] =?UTF-8?q?Pr=C3=A1va:=20Job=20na=20upload=20feedbacku?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/jobs/submit.py | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/mo/jobs/submit.py b/mo/jobs/submit.py
index a981f8d9..ed457965 100644
--- a/mo/jobs/submit.py
+++ b/mo/jobs/submit.py
@@ -13,7 +13,7 @@ import zipfile
 
 import mo.db as db
 from mo.jobs import TheJob, job_handler, job_file_path
-import mo.rights
+from mo.rights import Right
 from mo.submit import Submitter, SubmitException
 from mo.util import logger, data_dir
 from mo.util_format import inflect_number, inflect_by_number
@@ -169,17 +169,13 @@ def handle_upload_feedback(the_job: TheJob):
                 .filter(db.Participation.user_id.in_(user_dict.keys()))
                 .all())
 
-        rr = mo.rights.Rights(job.user)
-        rights_cache = {}
         user_rights = {}
         for user, pion, contest in rows:
             user_dict[user.user_id] = user
-            if contest.contest_id not in rights_cache:
-                rr.get_for_contest(contest)
-                rights_cache[contest.contest_id] = (
-                    rr.have_right(mo.rights.Right.upload_submits)
-                    or (rr.have_right(mo.rights.Right.upload_feedback) and round.state == db.RoundState.grading))
-            user_rights[user.user_id] = rights_cache[contest.contest_id]
+            rr = the_job.gatekeeper.rights_for_contest(contest)
+            user_rights[user.user_id] = (
+                rr.have_right(Right.upload_submits)
+                or (rr.have_right(Right.upload_feedback) and round.state == db.RoundState.grading))
 
         for f in files:
             f.user = user_dict[f.user_id]
-- 
GitLab