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): ...@@ -136,7 +136,8 @@ class Place(Base):
return place_levels[self.level].in_name() + " " + name 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() return get_session().query(Place).filter_by(parent=None).one()
......
...@@ -358,6 +358,7 @@ class Gatekeeper: ...@@ -358,6 +358,7 @@ class Gatekeeper:
roles: List[db.UserRole] roles: List[db.UserRole]
parent_cache: Dict[int, List[db.Place]] parent_cache: Dict[int, List[db.Place]]
rights_cache: Dict[Tuple[Optional[int], Optional[int], Optional[str], Optional[int], Optional[db.RoleType]], Rights] 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): def __init__(self, user: db.User):
self.user = user self.user = user
...@@ -365,6 +366,12 @@ class Gatekeeper: ...@@ -365,6 +366,12 @@ class Gatekeeper:
assert user.is_org or user.is_admin assert user.is_org or user.is_admin
self.parent_cache = {} self.parent_cache = {}
self.rights_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]: def get_ancestors(self, place: db.Place) -> List[db.Place]:
pid = place.place_id pid = place.place_id
...@@ -425,7 +432,7 @@ class Gatekeeper: ...@@ -425,7 +432,7 @@ class Gatekeeper:
elif for_place: elif for_place:
place = for_place place = for_place
else: else:
place = db.get_root_place() place = self.get_root_place()
rights = RoundRights() rights = RoundRights()
rights.round = round rights.round = round
rights._clone_from(self.rights_for( 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