From ff1654e65c6cd06407e3fbde37e19ff133ceac1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 19 Jun 2025 09:43:34 +0200 Subject: [PATCH] fix: enable_web argument toggles the frontend now - always initialise the WebServer (also if enable_web is False). Otherwise, the socketio server will not be initialised - passing the enable_web argument to the WebServer which is then used to decide whether to add the frontend routes --- src/pydase/server/server.py | 20 ++++++++++---------- src/pydase/server/web_server/web_server.py | 18 +++++++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index f5ee5b7..8278cc4 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -226,17 +226,17 @@ class Server: server_task = self._loop.create_task(addin_server.serve()) server_task.add_done_callback(self._handle_server_shutdown) self.servers[server_name] = server_task - if self._enable_web: - self._web_server = WebServer( - data_service_observer=self._observer, - host=self._host, - port=self._web_port, - **self._kwargs, - ) - server_task = self._loop.create_task(self._web_server.serve()) + self._web_server = WebServer( + data_service_observer=self._observer, + host=self._host, + port=self._web_port, + enable_frontend=self._enable_web, + **self._kwargs, + ) + server_task = self._loop.create_task(self._web_server.serve()) - server_task.add_done_callback(self._handle_server_shutdown) - self.servers["web"] = server_task + server_task.add_done_callback(self._handle_server_shutdown) + self.servers["web"] = server_task self._loop.create_task(self._state_manager.autosave()) diff --git a/src/pydase/server/web_server/web_server.py b/src/pydase/server/web_server/web_server.py index e58e861..5da1631 100644 --- a/src/pydase/server/web_server/web_server.py +++ b/src/pydase/server/web_server/web_server.py @@ -81,6 +81,7 @@ class WebServer: host: str, port: int, *, + enable_frontend: bool = True, css: str | Path | None = None, favicon_path: str | Path | None = None, enable_cors: bool = True, @@ -97,6 +98,7 @@ class WebServer: self.enable_cors = enable_cors self.frontend_src = frontend_src self.favicon_path: Path | str = favicon_path # type: ignore + self.enable_frontend = enable_frontend if self.favicon_path is None: self.favicon_path = self.frontend_src / "favicon.ico" @@ -162,15 +164,17 @@ class WebServer: # Define routes self._sio.attach(app, socketio_path="/ws/socket.io") - app.router.add_static("/assets", self.frontend_src / "assets") - app.router.add_get("/favicon.ico", self._favicon_route) - app.router.add_get("/service-properties", self._service_properties_route) - app.router.add_get("/web-settings", self._web_settings_route) - app.router.add_get("/custom.css", self._styles_route) + if self.enable_frontend: + app.router.add_static("/assets", self.frontend_src / "assets") + app.router.add_get("/favicon.ico", self._favicon_route) + app.router.add_get("/service-properties", self._service_properties_route) + app.router.add_get("/web-settings", self._web_settings_route) + app.router.add_get("/custom.css", self._styles_route) app.add_subapp("/api/", create_api_application(self.state_manager)) - app.router.add_get(r"/", index) - app.router.add_get(r"/{tail:.*}", index) + if self.enable_frontend: + app.router.add_get(r"/", index) + app.router.add_get(r"/{tail:.*}", index) await aiohttp.web._run_app( app,