From 3e33c807de5bdf9caf12aa1a37fdb2af266da6d9 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