From 7e0b16c57d64e6f42add19bbd8e69e3611082f86 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 19 Dec 2025 21:20:36 -0600 Subject: [PATCH] fix: expose fallback key for email settings --- src/wuttaweb/views/email.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/wuttaweb/views/email.py b/src/wuttaweb/views/email.py index 981faff..b71ce51 100644 --- a/src/wuttaweb/views/email.py +++ b/src/wuttaweb/views/email.py @@ -63,6 +63,7 @@ class EmailSettingView(MasterView): # pylint: disable=abstract-method form_fields = [ "key", + "fallback_key", "description", "subject", "sender", @@ -92,9 +93,11 @@ class EmailSettingView(MasterView): # pylint: disable=abstract-method def normalize_setting(self, setting): # pylint: disable=empty-docstring """ """ key = setting.__name__ + setting = setting(self.config) return { "key": key, - "description": setting.__doc__, + "fallback_key": setting.fallback_key or "", + "description": setting.get_description() or "", "subject": self.email_handler.get_auto_subject( key, rendered=False, setting=setting ), @@ -158,8 +161,12 @@ class EmailSettingView(MasterView): # pylint: disable=abstract-method f = form super().configure_form(f) + # fallback_key + f.set_readonly("fallback_key") + # description f.set_readonly("description") + f.set_widget("description", "notes") # replyto f.set_required("replyto", False) @@ -247,11 +254,12 @@ class EmailSettingView(MasterView): # pylint: disable=abstract-method if self.viewing: setting = context["instance"] context["setting"] = setting + context["has_html_template"] = self.email_handler.get_auto_body_template( - setting["key"], "html" + setting["key"], "html", fallback_key=setting["fallback_key"] ) context["has_txt_template"] = self.email_handler.get_auto_body_template( - setting["key"], "txt" + setting["key"], "txt", fallback_key=setting["fallback_key"] ) return super().render_to_response(template, context) @@ -269,11 +277,15 @@ class EmailSettingView(MasterView): # pylint: disable=abstract-method mode = self.request.params.get("mode", "html") if mode == "txt": - body = self.email_handler.get_auto_txt_body(key, context) + body = self.email_handler.get_auto_txt_body( + key, context, fallback_key=setting.fallback_key + ) self.request.response.content_type = "text/plain" else: # html - body = self.email_handler.get_auto_html_body(key, context) + body = self.email_handler.get_auto_html_body( + key, context, fallback_key=setting.fallback_key + ) self.request.response.text = body return self.request.response