1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-26 16:58:28 +00:00

Catch error when a file is deleted during the compression of project

Fix #860
This commit is contained in:
Julien Duponchelle 2017-01-10 10:16:45 +01:00
parent 666461277d
commit e0071f5b59
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8

View File

@ -696,6 +696,7 @@ class Project:
if self._status == "closed": if self._status == "closed":
yield from self.open() yield from self.open()
try:
with tempfile.TemporaryDirectory() as tmpdir: with tempfile.TemporaryDirectory() as tmpdir:
zipstream = yield from export_project(self, tmpdir, keep_compute_id=True, allow_all_nodes=True) zipstream = yield from export_project(self, tmpdir, keep_compute_id=True, allow_all_nodes=True)
with open(os.path.join(tmpdir, "project.gns3p"), "wb+") as f: with open(os.path.join(tmpdir, "project.gns3p"), "wb+") as f:
@ -703,6 +704,8 @@ class Project:
f.write(data) f.write(data)
with open(os.path.join(tmpdir, "project.gns3p"), "rb") as f: with open(os.path.join(tmpdir, "project.gns3p"), "rb") as f:
project = yield from import_project(self._controller, str(uuid.uuid4()), f, location=location, name=name, keep_compute_id=True) project = yield from import_project(self._controller, str(uuid.uuid4()), f, location=location, name=name, keep_compute_id=True)
except OSError as e:
raise aiohttp.web.HTTPConflict(text="Can not duplicate project: {}".format(str(e)))
if previous_status == "closed": if previous_status == "closed":
yield from self.close() yield from self.close()