Fix snapshots after merging

This commit is contained in:
grossmj 2026-04-11 19:54:49 +08:00
parent 0d3fad8c8f
commit 9c988b34d0
No known key found for this signature in database
GPG Key ID: 1E7DD6DBB53FF3D7
4 changed files with 10 additions and 6 deletions

View File

@ -807,7 +807,7 @@ class Project:
with open(self._snapshot_conf_path, encoding="utf-8") as f:
self._snapshot_conf = json.load(f)
except (OSError, UnicodeDecodeError, ValueError) as e:
raise aiohttp.web.HTTPConflict(text="Could not read snapshot config {}: {}".format(self._snapshot_conf_path, str(e)))
raise ControllerError(f"Could not read snapshot config {e}")
# Load all legacy snapshots (.gns3project files) to create an initial snapshot config if it doesn't exist
if os.path.exists(snapshot_dir) and not self._snapshot_conf:
@ -843,7 +843,7 @@ class Project:
self._snapshot_conf = []
for snapshot in self._snapshots.values():
self._snapshot_conf.append(snapshot.__json__())
self._snapshot_conf.append(snapshot.asdict())
try:
with open(self._snapshot_conf_path, 'w+') as f:
json.dump(self._snapshot_conf, f, indent=4)

View File

@ -16,6 +16,7 @@
from pydantic import BaseModel, Field
from typing import Optional
from uuid import UUID
@ -24,8 +25,8 @@ class SnapshotBase(BaseModel):
Common properties for snapshot.
"""
name: str
name: str = Field(..., description="Name of the snapshot")
description: Optional[str] = Field(None, description="Description of the snapshot")
class SnapshotCreate(SnapshotBase):
"""
@ -39,4 +40,7 @@ class Snapshot(SnapshotBase):
snapshot_id: UUID
project_id: UUID
name: str = Field(..., description="Name of the snapshot")
filename: str = Field(..., description="Filename of the snapshot")
description: str = Field(..., description="Description of the snapshot")
created_at: int = Field(..., description="Date of the snapshot (UTC timestamp)")

View File

@ -75,4 +75,4 @@ class TestSnapshotRoutes:
response = await client.post(app.url_path_for("create_snapshot", project_id=project.id), json={"name": "snap1"})
assert response.status_code == status.HTTP_201_CREATED
assert len(os.listdir(os.path.join(project.path, "snapshots"))) == 1
assert len(os.listdir(os.path.join(project.path, "snapshots"))) == 2

View File

@ -72,7 +72,7 @@ def test_json(project):
# new style snapshot
snapshot = Snapshot(project, name="snapshot_test2")
assert snapshot.__json__() == {
assert snapshot.asdict() == {
"snapshot_id": snapshot._id,
"name": "snapshot_test2",
"project_id": project.id,