From 41a46cbd84a9f5d7ee4d5a60d772c47eaa72bb73 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sat, 16 Jan 2021 15:56:52 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=A1va:=20Import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/imports.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/mo/imports.py b/mo/imports.py index d758ef29..b3a4e8e0 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -54,8 +54,7 @@ class Import: # InternĂ: Stav importu place_cache: Dict[str, db.Place] school_place_cache: Dict[str, db.Place] - rr: Optional[mo.rights.Rights] - place_rights_cache: Dict[int, bool] + gatekeeper: mo.rights.Gatekeeper new_user_ids: List[int] line_number: int = 0 @@ -64,7 +63,6 @@ class Import: self.rr = None self.place_cache = {} self.school_place_cache = {} - self.place_rights_cache = {} self.new_user_ids = [] def setup(self): @@ -103,19 +101,10 @@ class Import: return name def check_rights(self, place: db.Place) -> bool: - if place.place_id in self.place_rights_cache: - return self.place_rights_cache[place.place_id] - - if self.rr is None: - self.rr = mo.rights.Rights(self.user) - round = self.round assert round is not None - self.rr.get_for(place, round.year, round.category, round.seq) - result = self.rr.have_right(mo.rights.Right.manage_contest) - self.place_rights_cache[place.place_id] = result - - return result + rights = self.gatekeeper.rights_for(place, round.year, round.category, round.seq) + return rights.have_right(mo.rights.Right.manage_contest) def parse_opt_place(self, kod: str) -> Optional[db.Place]: if kod == "": @@ -564,6 +553,7 @@ def create_import(user: db.User, type: ImportType, fmt: FileFormat, round: Optio imp.round = round imp.contest = contest imp.fmt = fmt + imp.gatekeeper = mo.rights.Gatekeeper(user) imp.setup() return imp -- GitLab