From c55511c099db64adfede226be4ce1051c1e5f6e8 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Mon, 15 Sep 2025 11:34:40 -0400 Subject: [PATCH] webui changes to launch after config file changes --- templates/index_v2.html | 4 ++-- web_interface_v2.py | 28 ++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/templates/index_v2.html b/templates/index_v2.html index 9e2c9b25..e92db3ce 100644 --- a/templates/index_v2.html +++ b/templates/index_v2.html @@ -877,11 +877,11 @@
CPU Temperature
-
{{ main_config.display.hardware.brightness }}
+
{{ main_config.display.hardware.brightness if main_config and main_config.display and main_config.display.hardware and main_config.display.hardware.brightness is defined else 0 }}
Brightness
-
{{ main_config.display.hardware.cols }}x{{ main_config.display.hardware.rows }}
+
{{ main_config.display.hardware.cols if main_config and main_config.display and main_config.display.hardware and main_config.display.hardware.cols is defined else 0 }}x{{ main_config.display.hardware.rows if main_config and main_config.display and main_config.display.hardware and main_config.display.hardware.rows is defined else 0 }}
Resolution
diff --git a/web_interface_v2.py b/web_interface_v2.py index 9be93db5..4c16b5a0 100644 --- a/web_interface_v2.py +++ b/web_interface_v2.py @@ -62,6 +62,27 @@ current_display_data = {} logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) +class DictWrapper: + """Wrapper to make dictionary accessible via dot notation for Jinja2 templates.""" + def __init__(self, data): + if isinstance(data, dict): + for key, value in data.items(): + if isinstance(value, dict): + setattr(self, key, DictWrapper(value)) + else: + setattr(self, key, value) + else: + # If not a dict, just store the value + self._value = data + + def __getattr__(self, name): + # Return None for missing attributes to avoid template errors + return None + + def __getitem__(self, key): + # Support bracket notation as fallback + return getattr(self, key, None) + class DisplayMonitor: def __init__(self): self.running = False @@ -401,7 +422,7 @@ def index(): return render_template('index_v2.html', schedule_config=schedule_config, - main_config=main_config, + main_config=DictWrapper(main_config), main_config_data=main_config_data, secrets_config=secrets_config_data, main_config_json=main_config_json, @@ -418,7 +439,7 @@ def index(): safe_secrets = {'weather': {'api_key': ''}} return render_template('index_v2.html', schedule_config={}, - main_config={}, + main_config=DictWrapper({}), main_config_data={}, secrets_config=safe_secrets, main_config_json="{}", @@ -1444,6 +1465,5 @@ if __name__ == '__main__': host='0.0.0.0', port=5001, debug=False, - use_reloader=False, - allow_unsafe_werkzeug=True + use_reloader=False ) \ No newline at end of file