diff --git a/mo/db.py b/mo/db.py index 95184e96b0eb92f939fdc8199f61aa3407b3dc29..f24e55c8263bf239562b85216e7a8c2a6c36e8da 100644 --- a/mo/db.py +++ b/mo/db.py @@ -118,15 +118,8 @@ class Place(Base): return len(PlaceType.choices(level=self.level + 1)) > 0 -# Předpokládáme, že za běhu aplikace se root nezmění -root_place_cache: Optional[Place] = None - - def get_root_place(): - global root_place_cache - if root_place_cache is None: - root_place_cache = get_session().query(Place).filter_by(parent=None).one() - return root_place_cache + return get_session().query(Place).filter_by(parent=None).one() def get_place_by_code(code: str, fetch_school: bool = False) -> Optional[Place]: diff --git a/mo/imports.py b/mo/imports.py index 6d59a2ca9a4b0c8e36cc30d9a4e8b7135a388453..72c7b7b3dc98fdff4878118727dd51225f15254a 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -572,9 +572,11 @@ class JudgeImport(Import): log_msg_prefix = 'Opravovatelé' log_details = {'action': 'import-judges'} template_basename = 'sablona-oprav' + root_place: db.Place def setup(self): assert self.round is not None + self.root_place = db.get_root_place() def import_row(self, r: mo.csv.Row): assert isinstance(r, JudgeImportRow) @@ -595,7 +597,7 @@ class JudgeImport(Import): return contest = self.obtain_contest(oblast, allow_none=True) - place = contest.place if contest else db.get_root_place() + place = contest.place if contest else self.root_place if not self.check_rights(place): return self.error(f'K místu "{place.get_code()}" nemáte práva na správu soutěže')