Skip to content
Snippets Groups Projects
Commit db7408f9 authored by Jan Prachař's avatar Jan Prachař
Browse files

global root_place causes sqlalchemy.orm.exc.DetachedInstanceError

Instance <Place> is not bound to a Session; attribute refresh operation
cannot proceed (Background on this error at:
http://sqlalche.me/e/13/bhk3)
parent 6058cac8
No related branches found
No related tags found
1 merge request!42global root_place causes sqlalchemy.orm.exc.DetachedInstanceError
......@@ -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]:
......
......@@ -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')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment