Skip to content
Snippets Groups Projects
Commit 82f53ef0 authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

mo.rights: Kešování root_place

parent a1f157b9
No related branches found
No related tags found
1 merge request!97Import orgů
......@@ -136,7 +136,8 @@ class Place(Base):
return place_levels[self.level].in_name() + " " + name
def get_root_place():
def get_root_place() -> Place:
"""Obvykle voláme mo.rights.Gatekeeper.get_root_place(), kterékešuje."""
return get_session().query(Place).filter_by(parent=None).one()
......
......@@ -358,6 +358,7 @@ class Gatekeeper:
roles: List[db.UserRole]
parent_cache: Dict[int, List[db.Place]]
rights_cache: Dict[Tuple[Optional[int], Optional[int], Optional[str], Optional[int], Optional[db.RoleType]], Rights]
root_place: Optional[db.Place]
def __init__(self, user: db.User):
self.user = user
......@@ -365,6 +366,12 @@ class Gatekeeper:
assert user.is_org or user.is_admin
self.parent_cache = {}
self.rights_cache = {}
self.root_place = None
def get_root_place(self) -> db.Place:
if not self.root_place:
self.root_place = db.get_root_place()
return self.root_place
def get_ancestors(self, place: db.Place) -> List[db.Place]:
pid = place.place_id
......@@ -425,7 +432,7 @@ class Gatekeeper:
elif for_place:
place = for_place
else:
place = db.get_root_place()
place = self.get_root_place()
rights = RoundRights()
rights.round = round
rights._clone_from(self.rights_for(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment