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