diff --git a/mo/imports.py b/mo/imports.py index d758ef2994becfa0b13bb7ae806846c4aa9ff2ba..b3a4e8e04ab714bc81dcfe8826643d4dce4e7003 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