Move project lock until all steps in project open are completed (#1977)
This commit is contained in:
@@ -356,6 +356,7 @@ class NWProject:
|
||||
self.setProjectChanged(False)
|
||||
self._valid = True
|
||||
self._state = NWProjectState.READY
|
||||
self._storage.lockSession() # Lock only after a successful open. See issue #1977.
|
||||
|
||||
SHARED.newStatusMessage(self.tr("Opened Project: {0}").format(self._data.name))
|
||||
|
||||
|
||||
@@ -235,7 +235,6 @@ class NWStorage:
|
||||
if child.is_dir() and child.name.startswith("data_"):
|
||||
legacy.legacyDataFolder(basePath, child)
|
||||
|
||||
self._writeLockFile()
|
||||
self._ready = True
|
||||
|
||||
return NWStorageOpen.READY
|
||||
@@ -249,6 +248,12 @@ class NWStorage:
|
||||
return True
|
||||
return True
|
||||
|
||||
def lockSession(self) -> None:
|
||||
"""Lock the session when the project is successfully opened."""
|
||||
if self._ready:
|
||||
self._writeLockFile()
|
||||
return
|
||||
|
||||
def closeSession(self) -> None:
|
||||
"""Run tasks related to closing the session."""
|
||||
self._clearLockFile()
|
||||
|
||||
@@ -142,7 +142,9 @@ def testCoreStorage_InitProjectStorage(monkeypatch, mockGUI, fncPath, mockRnd):
|
||||
storage.clear()
|
||||
|
||||
# Open twice, where second should fail due to lockfile
|
||||
# Note that locking is only possible after a successful open
|
||||
assert storage.initProjectStorage(fncPath) == NWStorageOpen.READY
|
||||
storage.lockSession()
|
||||
assert storage.initProjectStorage(fncPath) == NWStorageOpen.LOCKED
|
||||
assert isinstance(storage.lockStatus, list)
|
||||
assert len(storage.lockStatus) == 4
|
||||
|
||||
Reference in New Issue
Block a user