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