Merge branch 'release'
This commit is contained in:
@@ -356,6 +356,7 @@ class NWProject:
|
|||||||
self.setProjectChanged(False)
|
self.setProjectChanged(False)
|
||||||
self._valid = True
|
self._valid = True
|
||||||
self._state = NWProjectState.READY
|
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))
|
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_"):
|
if child.is_dir() and child.name.startswith("data_"):
|
||||||
legacy.legacyDataFolder(basePath, child)
|
legacy.legacyDataFolder(basePath, child)
|
||||||
|
|
||||||
self._writeLockFile()
|
|
||||||
self._ready = True
|
self._ready = True
|
||||||
|
|
||||||
return NWStorageOpen.READY
|
return NWStorageOpen.READY
|
||||||
@@ -249,6 +248,12 @@ class NWStorage:
|
|||||||
return True
|
return True
|
||||||
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:
|
def closeSession(self) -> None:
|
||||||
"""Run tasks related to closing the session."""
|
"""Run tasks related to closing the session."""
|
||||||
self._clearLockFile()
|
self._clearLockFile()
|
||||||
|
|||||||
@@ -142,7 +142,9 @@ def testCoreStorage_InitProjectStorage(monkeypatch, mockGUI, fncPath, mockRnd):
|
|||||||
storage.clear()
|
storage.clear()
|
||||||
|
|
||||||
# Open twice, where second should fail due to lockfile
|
# 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
|
assert storage.initProjectStorage(fncPath) == NWStorageOpen.READY
|
||||||
|
storage.lockSession()
|
||||||
assert storage.initProjectStorage(fncPath) == NWStorageOpen.LOCKED
|
assert storage.initProjectStorage(fncPath) == NWStorageOpen.LOCKED
|
||||||
assert isinstance(storage.lockStatus, list)
|
assert isinstance(storage.lockStatus, list)
|
||||||
assert len(storage.lockStatus) == 4
|
assert len(storage.lockStatus) == 4
|
||||||
|
|||||||
Reference in New Issue
Block a user