From ce653aa7afc9b0c0aa76f4b4799643278f740041 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Thu, 13 Jan 2022 00:24:42 +0100
Subject: [PATCH] =?UTF-8?q?Objekt=20typu=20Rights=20si=20pamatuje,=20kter?=
 =?UTF-8?q?=C3=BD=20gatekeeper=20ho=20vyrobil?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/rights.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mo/rights.py b/mo/rights.py
index 75c8a876..1bc0b58d 100644
--- a/mo/rights.py
+++ b/mo/rights.py
@@ -167,6 +167,7 @@ class Rights:
     user: db.User
     user_roles: List[db.UserRole]
     rights: Set[Right]
+    gatekeeper: 'Gatekeeper'        # který tato práva přidělil
 
     def __repr__(self):
         ros = " ".join([r.role.name for r in self.user_roles])
@@ -409,6 +410,7 @@ class Gatekeeper:
             return self.rights_cache[cache_key]
 
         rights = Rights()
+        rights.gatekeeper = self
         rights.user = self.user
         rights.user_roles = []
         rights.rights = set()
@@ -444,6 +446,7 @@ class Gatekeeper:
         else:
             place = self.get_root_place()
         rights = RoundRights()
+        rights.gatekeeper = self
         rights.round = round
         rights._clone_from(self.rights_for(
             place=place,
@@ -455,6 +458,7 @@ class Gatekeeper:
 
     def rights_for_contest(self, contest: db.Contest, site: Optional[db.Place] = None) -> ContestRights:
         rights = ContestRights()
+        rights.gatekeeper = self
         rights.round = contest.round
         rights.contest = contest
         rights._clone_from(self.rights_for(
-- 
GitLab