mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-27 10:42:28 +02:00
fix: add event handling for deleted projects
This commit is contained in:
parent
544d15c87e
commit
bc8e43dfca
@ -29,7 +29,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from importlib import resources as importlib_resources
|
from importlib import resources as importlib_resources
|
||||||
|
|
||||||
from watchdog.events import FileSystemEventHandler
|
from watchdog.events import FileSystemEventHandler, DirDeletedEvent, FileDeletedEvent
|
||||||
from watchdog.observers import Observer
|
from watchdog.observers import Observer
|
||||||
|
|
||||||
from ..config import Config
|
from ..config import Config
|
||||||
@ -73,6 +73,9 @@ class _ProjectsDirectoryEventHandler(FileSystemEventHandler):
|
|||||||
def on_moved(self, event):
|
def on_moved(self, event):
|
||||||
self._handle_event(event)
|
self._handle_event(event)
|
||||||
|
|
||||||
|
def on_deleted(self, event: DirDeletedEvent | FileDeletedEvent) -> None:
|
||||||
|
self._handle_event(event)
|
||||||
|
|
||||||
def _handle_event(self, event):
|
def _handle_event(self, event):
|
||||||
if event.is_directory:
|
if event.is_directory:
|
||||||
# Only react to direct child directories of the projects path
|
# Only react to direct child directories of the projects path
|
||||||
@ -446,6 +449,12 @@ class Controller:
|
|||||||
return # Monitor was stopped, skip the scan
|
return # Monitor was stopped, skip the scan
|
||||||
try:
|
try:
|
||||||
await self.load_projects()
|
await self.load_projects()
|
||||||
|
# Remove stale projects that no longer exist on disk
|
||||||
|
for project_id in list(self._projects):
|
||||||
|
project = self._projects[project_id]
|
||||||
|
if not os.path.exists(project.path):
|
||||||
|
log.info(f"Removing stale project '{project.name}' ('{project.path}' no longer exists)")
|
||||||
|
del self._projects[project.id]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.warning(f"Projects directory rescan failed: {e}")
|
log.warning(f"Projects directory rescan failed: {e}")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user