From 5fdba539a0912bc089341665c07a6817f3c9c185 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 7 Feb 2026 09:27:50 -0600 Subject: [PATCH] fix: prefer new setting name for buefy_css liburl old setting name is still supported for now, with deprecation warnings. this change was necessary due to ambiguity of the buefy setting, when buefy.css setting was set --- src/wuttaweb/templates/base.mako | 2 +- src/wuttaweb/util.py | 70 +++++++++++++++++++++++++++++--- src/wuttaweb/views/settings.py | 2 +- tests/test_util.py | 63 +++++++++++++++++++++++++++- 4 files changed, 129 insertions(+), 8 deletions(-) diff --git a/src/wuttaweb/templates/base.mako b/src/wuttaweb/templates/base.mako index 9425438..2c231ca 100644 --- a/src/wuttaweb/templates/base.mako +++ b/src/wuttaweb/templates/base.mako @@ -113,7 +113,7 @@ <%def name="buefy_styles()"> - ${h.stylesheet_link(h.get_liburl(request, 'buefy.css'))} + ${h.stylesheet_link(h.get_liburl(request, 'buefy_css'))} <%def name="base_styles()"> diff --git a/src/wuttaweb/util.py b/src/wuttaweb/util.py index 5492485..1080820 100644 --- a/src/wuttaweb/util.py +++ b/src/wuttaweb/util.py @@ -188,6 +188,14 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches """ config = request.wutta_config + if key == "buefy.css": + warnings.warn( + "libver key 'buefy.css' is deprecated; please use 'buefy_css' instead", + DeprecationWarning, + stacklevel=2, + ) + key = "buefy_css" + # nb. we prefer a setting to be named like: wuttaweb.libver.vue # but for back-compat this also can work: tailbone.libver.vue # and for more back-compat this can work: wuttaweb.vue_version @@ -200,6 +208,17 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches if version: return version + # maybe try deprecated key for buefy.css + if key == "buefy_css": + version = config.get("wuttaweb.libver.buefy.css") + if version: + warnings.warn( + "config for wuttaweb.libver.buefy.css is deprecated; " + "please set wuttaweb.libver.buefy_css instead", + DeprecationWarning, + ) + return version + # fallback to caller-specified prefix if prefix != "wuttaweb": version = config.get(f"{prefix}.libver.{key}") @@ -211,6 +230,17 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches ) return version + # maybe try deprecated key for buefy.css + if key == "buefy_css": + version = config.get(f"{prefix}.libver.buefy.css") + if version: + warnings.warn( + f"config for {prefix}.libver.buefy.css is deprecated; " + "please set wuttaweb.libver.buefy_css instead", + DeprecationWarning, + ) + return version + if key == "buefy": if not default_only: # nb. old/legacy setting @@ -225,7 +255,7 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches if not configured_only: return "0.9.25" - elif key == "buefy.css": + elif key == "buefy_css": # nb. this always returns something return get_libver( request, "buefy", default_only=default_only, configured_only=configured_only @@ -280,13 +310,13 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches return None -def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches +def get_liburl( request, key, configured_only=False, default_only=False, prefix="wuttaweb", -): +): # pylint: disable=too-many-return-statements,too-many-branches,too-many-statements """ Return the appropriate URL for the web resource library identified by ``key``. @@ -321,7 +351,7 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches * ``vue`` * ``vue_resource`` * ``buefy`` - * ``buefy.css`` + * ``buefy_css`` * ``fontawesome`` Vue 3 + Oruga @@ -353,6 +383,14 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches """ config = request.wutta_config + if key == "buefy.css": + warnings.warn( + "liburl key 'buefy.css' is deprecated; please use 'buefy_css' instead", + DeprecationWarning, + stacklevel=2, + ) + key = "buefy_css" + if not default_only: # nb. new/preferred setting @@ -360,6 +398,17 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches if url: return url + # maybe try deprecated key for buefy.css + if key == "buefy_css": + version = config.get("wuttaweb.liburl.buefy.css") + if version: + warnings.warn( + "config for wuttaweb.liburl.buefy.css is deprecated; " + "please set wuttaweb.liburl.buefy_css instead", + DeprecationWarning, + ) + return version + # fallback to caller-specified prefix url = config.get(f"{prefix}.liburl.{key}") if url: @@ -370,6 +419,17 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches ) return url + # maybe try deprecated key for buefy.css + if key == "buefy_css": + version = config.get(f"{prefix}.liburl.buefy.css") + if version: + warnings.warn( + f"config for {prefix}.liburl.buefy.css is deprecated; " + "please set wuttaweb.liburl.buefy_css instead", + DeprecationWarning, + ) + return version + if configured_only: return None @@ -400,7 +460,7 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches return liburl + static.buefy_js.relpath return f"https://unpkg.com/buefy@{version}/dist/buefy.min.js" - if key == "buefy.css": + if key == "buefy_css": if static and hasattr(static, "buefy_css"): return liburl + static.buefy_css.relpath return f"https://unpkg.com/buefy@{version}/dist/buefy.min.css" diff --git a/src/wuttaweb/views/settings.py b/src/wuttaweb/views/settings.py index d365da2..a1c9c1c 100644 --- a/src/wuttaweb/views/settings.py +++ b/src/wuttaweb/views/settings.py @@ -115,7 +115,7 @@ class AppInfoView(MasterView): # pylint: disable=abstract-method ("vue", "(Vue2) Vue"), ("vue_resource", "(Vue2) vue-resource"), ("buefy", "(Vue2) Buefy"), - ("buefy.css", "(Vue2) Buefy CSS"), + ("buefy_css", "(Vue2) Buefy CSS"), ("fontawesome", "(Vue2) FontAwesome"), ("bb_vue", "(Vue3) vue"), ("bb_oruga", "(Vue3) @oruga-ui/oruga-next"), diff --git a/tests/test_util.py b/tests/test_util.py index a0285a1..dbc4050 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -95,27 +95,73 @@ class TestGetLibVer(TestCase): self.assertEqual(version, "0.9.25") def test_buefy_css_default(self): + version = mod.get_libver(self.request, "buefy_css") + self.assertEqual(version, "0.9.25") version = mod.get_libver(self.request, "buefy.css") self.assertEqual(version, "0.9.25") def test_buefy_css_custom_old(self): # nb. this uses same setting as buefy (js) self.config.setdefault("wuttaweb.buefy_version", "0.9.29") + version = mod.get_libver(self.request, "buefy_css") + self.assertEqual(version, "0.9.29") version = mod.get_libver(self.request, "buefy.css") self.assertEqual(version, "0.9.29") def test_buefy_css_custom_new(self): # nb. this uses same setting as buefy (js) self.config.setdefault("wuttaweb.libver.buefy", "0.9.29") + version = mod.get_libver(self.request, "buefy_css") + self.assertEqual(version, "0.9.29") version = mod.get_libver(self.request, "buefy.css") self.assertEqual(version, "0.9.29") def test_buefy_css_configured_only(self): + version = mod.get_libver(self.request, "buefy_css", configured_only=True) + self.assertIsNone(version) version = mod.get_libver(self.request, "buefy.css", configured_only=True) self.assertIsNone(version) + # legacy prefix + deprecated setting name + self.config.setdefault("tailbone.libver.buefy.css", "0.9.23") + version = mod.get_libver( + self.request, "buefy_css", configured_only=True, prefix="tailbone" + ) + self.assertEqual(version, "0.9.23") + version = mod.get_libver( + self.request, "buefy.css", configured_only=True, prefix="tailbone" + ) + self.assertEqual(version, "0.9.23") + + # legacy prefix + preferred setting name + self.config.setdefault("tailbone.libver.buefy_css", "0.9.22") + version = mod.get_libver( + self.request, "buefy_css", configured_only=True, prefix="tailbone" + ) + self.assertEqual(version, "0.9.22") + version = mod.get_libver( + self.request, "buefy.css", configured_only=True, prefix="tailbone" + ) + self.assertEqual(version, "0.9.22") + + # deprecated setting name + self.config.setdefault("wuttaweb.libver.buefy.css", "0.9.29") + version = mod.get_libver(self.request, "buefy_css", configured_only=True) + self.assertEqual(version, "0.9.29") + version = mod.get_libver(self.request, "buefy.css", configured_only=True) + self.assertEqual(version, "0.9.29") + + # preferred setting name + self.config.setdefault("wuttaweb.libver.buefy_css", "0.9.27") + version = mod.get_libver(self.request, "buefy_css", configured_only=True) + self.assertEqual(version, "0.9.27") + version = mod.get_libver(self.request, "buefy.css", configured_only=True) + self.assertEqual(version, "0.9.27") + def test_buefy_css_default_only(self): self.config.setdefault("wuttaweb.libver.buefy", "0.9.29") + version = mod.get_libver(self.request, "buefy_css", default_only=True) + self.assertEqual(version, "0.9.25") version = mod.get_libver(self.request, "buefy.css", default_only=True) self.assertEqual(version, "0.9.25") @@ -291,16 +337,31 @@ class TestGetLibUrl(TestCase): self.assertEqual(url, "/wutta/fanstatic/buefy.js") def test_buefy_css_default(self): + url = mod.get_liburl(self.request, "buefy_css") + self.assertEqual(url, "https://unpkg.com/buefy@0.9.25/dist/buefy.min.css") url = mod.get_liburl(self.request, "buefy.css") self.assertEqual(url, "https://unpkg.com/buefy@0.9.25/dist/buefy.min.css") def test_buefy_css_custom(self): - self.config.setdefault("wuttaweb.liburl.buefy.css", "/lib/buefy.css") + + # deprecated setting name + self.config.setdefault("wuttaweb.liburl.buefy.css", "/lib/deprecated-buefy.css") + url = mod.get_liburl(self.request, "buefy_css") + self.assertEqual(url, "/lib/deprecated-buefy.css") + url = mod.get_liburl(self.request, "buefy.css") + self.assertEqual(url, "/lib/deprecated-buefy.css") + + # preferred setting name + self.config.setdefault("wuttaweb.liburl.buefy_css", "/lib/buefy.css") + url = mod.get_liburl(self.request, "buefy_css") + self.assertEqual(url, "/lib/buefy.css") url = mod.get_liburl(self.request, "buefy.css") self.assertEqual(url, "/lib/buefy.css") def test_buefy_css_fanstatic(self): self.setup_fanstatic() + url = mod.get_liburl(self.request, "buefy_css") + self.assertEqual(url, "/wutta/fanstatic/buefy.css") url = mod.get_liburl(self.request, "buefy.css") self.assertEqual(url, "/wutta/fanstatic/buefy.css")