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