mirror of
https://github.com/GNS3/gns3-server.git
synced 2024-12-22 22:22:25 +00:00
Fix temporary project not cleanup with save as
This commit is contained in:
parent
0dea63c9ea
commit
d2d91ebdea
@ -81,13 +81,14 @@ class ProjectHandler:
|
|||||||
|
|
||||||
pm = ProjectManager.instance()
|
pm = ProjectManager.instance()
|
||||||
project = pm.get_project(request.match_info["project_id"])
|
project = pm.get_project(request.match_info["project_id"])
|
||||||
project.temporary = request.json.get("temporary", project.temporary)
|
|
||||||
project.name = request.json.get("name", project.name)
|
project.name = request.json.get("name", project.name)
|
||||||
project_path = request.json.get("path", project.path)
|
project_path = request.json.get("path", project.path)
|
||||||
if project_path != project.path:
|
if project_path != project.path:
|
||||||
project.path = project_path
|
project.path = project_path
|
||||||
for module in MODULES:
|
for module in MODULES:
|
||||||
yield from module.instance().project_moved(project)
|
yield from module.instance().project_moved(project)
|
||||||
|
# Very important we need to remove temporary flag after moving the project
|
||||||
|
project.temporary = request.json.get("temporary", project.temporary)
|
||||||
response.json(project)
|
response.json(project)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -139,9 +139,22 @@ class Project:
|
|||||||
if path != self._path and self.is_local() is False:
|
if path != self._path and self.is_local() is False:
|
||||||
raise aiohttp.web.HTTPForbidden(text="You are not allowed to modify the project directory location")
|
raise aiohttp.web.HTTPForbidden(text="You are not allowed to modify the project directory location")
|
||||||
|
|
||||||
|
old_path = None
|
||||||
|
if hasattr(self, "_path"):
|
||||||
|
old_path = self._path
|
||||||
|
|
||||||
self._path = path
|
self._path = path
|
||||||
self._update_temporary_file()
|
self._update_temporary_file()
|
||||||
|
|
||||||
|
# The order of operation is important because we want to avoid losing
|
||||||
|
# data
|
||||||
|
if old_path:
|
||||||
|
try:
|
||||||
|
shutil.rmtree(old_path)
|
||||||
|
except OSError as e:
|
||||||
|
raise aiohttp.web.HTTPConflict("Can't remove temporary directory {}: {}".format(old_path ,e))
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|
||||||
|
@ -69,15 +69,14 @@ def test_changing_path_temporary_flag(tmpdir):
|
|||||||
with patch("gns3server.modules.project.Project.is_local", return_value=True):
|
with patch("gns3server.modules.project.Project.is_local", return_value=True):
|
||||||
p = Project(temporary=True)
|
p = Project(temporary=True)
|
||||||
assert os.path.exists(p.path)
|
assert os.path.exists(p.path)
|
||||||
|
original_path = p.path
|
||||||
assert os.path.exists(os.path.join(p.path, ".gns3_temporary"))
|
assert os.path.exists(os.path.join(p.path, ".gns3_temporary"))
|
||||||
p.temporary = False
|
|
||||||
assert not os.path.exists(os.path.join(p.path, ".gns3_temporary"))
|
|
||||||
|
|
||||||
with open(str(tmpdir / ".gns3_temporary"), "w+") as f:
|
|
||||||
f.write("1")
|
|
||||||
|
|
||||||
p.path = str(tmpdir)
|
p.path = str(tmpdir)
|
||||||
|
p.temporary = False
|
||||||
|
assert not os.path.exists(os.path.join(p.path, ".gns3_temporary"))
|
||||||
assert not os.path.exists(os.path.join(str(tmpdir), ".gns3_temporary"))
|
assert not os.path.exists(os.path.join(str(tmpdir), ".gns3_temporary"))
|
||||||
|
assert not os.path.exists(original_path)
|
||||||
|
|
||||||
|
|
||||||
def test_temporary_path():
|
def test_temporary_path():
|
||||||
|
Loading…
Reference in New Issue
Block a user