Compare commits
2 commits
9541bc6a27
...
77c9d00eb9
| Author | SHA1 | Date | |
|---|---|---|---|
| 77c9d00eb9 | |||
| 5fdba539a0 |
6 changed files with 136 additions and 9 deletions
|
|
@ -5,6 +5,12 @@ All notable changes to wuttaweb will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## v0.27.3 (2026-02-07)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
|
||||||
|
- prefer new setting name for buefy_css liburl
|
||||||
|
|
||||||
## v0.27.2 (2026-02-04)
|
## v0.27.2 (2026-02-04)
|
||||||
|
|
||||||
### Fix
|
### Fix
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ build-backend = "hatchling.build"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "WuttaWeb"
|
name = "WuttaWeb"
|
||||||
version = "0.27.2"
|
version = "0.27.3"
|
||||||
description = "Web App for Wutta Framework"
|
description = "Web App for Wutta Framework"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [{name = "Lance Edgar", email = "lance@wuttaproject.org"}]
|
authors = [{name = "Lance Edgar", email = "lance@wuttaproject.org"}]
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="buefy_styles()">
|
<%def name="buefy_styles()">
|
||||||
${h.stylesheet_link(h.get_liburl(request, 'buefy.css'))}
|
${h.stylesheet_link(h.get_liburl(request, 'buefy_css'))}
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="base_styles()">
|
<%def name="base_styles()">
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,14 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
"""
|
"""
|
||||||
config = request.wutta_config
|
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
|
# nb. we prefer a setting to be named like: wuttaweb.libver.vue
|
||||||
# but for back-compat this also can work: tailbone.libver.vue
|
# but for back-compat this also can work: tailbone.libver.vue
|
||||||
# and for more back-compat this can work: wuttaweb.vue_version
|
# 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:
|
if version:
|
||||||
return 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
|
# fallback to caller-specified prefix
|
||||||
if prefix != "wuttaweb":
|
if prefix != "wuttaweb":
|
||||||
version = config.get(f"{prefix}.libver.{key}")
|
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
|
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 key == "buefy":
|
||||||
if not default_only:
|
if not default_only:
|
||||||
# nb. old/legacy setting
|
# nb. old/legacy setting
|
||||||
|
|
@ -225,7 +255,7 @@ def get_libver( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
if not configured_only:
|
if not configured_only:
|
||||||
return "0.9.25"
|
return "0.9.25"
|
||||||
|
|
||||||
elif key == "buefy.css":
|
elif key == "buefy_css":
|
||||||
# nb. this always returns something
|
# nb. this always returns something
|
||||||
return get_libver(
|
return get_libver(
|
||||||
request, "buefy", default_only=default_only, configured_only=configured_only
|
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
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches
|
def get_liburl(
|
||||||
request,
|
request,
|
||||||
key,
|
key,
|
||||||
configured_only=False,
|
configured_only=False,
|
||||||
default_only=False,
|
default_only=False,
|
||||||
prefix="wuttaweb",
|
prefix="wuttaweb",
|
||||||
):
|
): # pylint: disable=too-many-return-statements,too-many-branches,too-many-statements
|
||||||
"""
|
"""
|
||||||
Return the appropriate URL for the web resource library identified
|
Return the appropriate URL for the web resource library identified
|
||||||
by ``key``.
|
by ``key``.
|
||||||
|
|
@ -321,7 +351,7 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
* ``vue``
|
* ``vue``
|
||||||
* ``vue_resource``
|
* ``vue_resource``
|
||||||
* ``buefy``
|
* ``buefy``
|
||||||
* ``buefy.css``
|
* ``buefy_css``
|
||||||
* ``fontawesome``
|
* ``fontawesome``
|
||||||
|
|
||||||
Vue 3 + Oruga
|
Vue 3 + Oruga
|
||||||
|
|
@ -353,6 +383,14 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
"""
|
"""
|
||||||
config = request.wutta_config
|
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:
|
if not default_only:
|
||||||
|
|
||||||
# nb. new/preferred setting
|
# nb. new/preferred setting
|
||||||
|
|
@ -360,6 +398,17 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
if url:
|
if url:
|
||||||
return 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
|
# fallback to caller-specified prefix
|
||||||
url = config.get(f"{prefix}.liburl.{key}")
|
url = config.get(f"{prefix}.liburl.{key}")
|
||||||
if url:
|
if url:
|
||||||
|
|
@ -370,6 +419,17 @@ def get_liburl( # pylint: disable=too-many-return-statements,too-many-branches
|
||||||
)
|
)
|
||||||
return url
|
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:
|
if configured_only:
|
||||||
return None
|
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 liburl + static.buefy_js.relpath
|
||||||
return f"https://unpkg.com/buefy@{version}/dist/buefy.min.js"
|
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"):
|
if static and hasattr(static, "buefy_css"):
|
||||||
return liburl + static.buefy_css.relpath
|
return liburl + static.buefy_css.relpath
|
||||||
return f"https://unpkg.com/buefy@{version}/dist/buefy.min.css"
|
return f"https://unpkg.com/buefy@{version}/dist/buefy.min.css"
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ class AppInfoView(MasterView): # pylint: disable=abstract-method
|
||||||
("vue", "(Vue2) Vue"),
|
("vue", "(Vue2) Vue"),
|
||||||
("vue_resource", "(Vue2) vue-resource"),
|
("vue_resource", "(Vue2) vue-resource"),
|
||||||
("buefy", "(Vue2) Buefy"),
|
("buefy", "(Vue2) Buefy"),
|
||||||
("buefy.css", "(Vue2) Buefy CSS"),
|
("buefy_css", "(Vue2) Buefy CSS"),
|
||||||
("fontawesome", "(Vue2) FontAwesome"),
|
("fontawesome", "(Vue2) FontAwesome"),
|
||||||
("bb_vue", "(Vue3) vue"),
|
("bb_vue", "(Vue3) vue"),
|
||||||
("bb_oruga", "(Vue3) @oruga-ui/oruga-next"),
|
("bb_oruga", "(Vue3) @oruga-ui/oruga-next"),
|
||||||
|
|
|
||||||
|
|
@ -95,27 +95,73 @@ class TestGetLibVer(TestCase):
|
||||||
self.assertEqual(version, "0.9.25")
|
self.assertEqual(version, "0.9.25")
|
||||||
|
|
||||||
def test_buefy_css_default(self):
|
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")
|
version = mod.get_libver(self.request, "buefy.css")
|
||||||
self.assertEqual(version, "0.9.25")
|
self.assertEqual(version, "0.9.25")
|
||||||
|
|
||||||
def test_buefy_css_custom_old(self):
|
def test_buefy_css_custom_old(self):
|
||||||
# nb. this uses same setting as buefy (js)
|
# nb. this uses same setting as buefy (js)
|
||||||
self.config.setdefault("wuttaweb.buefy_version", "0.9.29")
|
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")
|
version = mod.get_libver(self.request, "buefy.css")
|
||||||
self.assertEqual(version, "0.9.29")
|
self.assertEqual(version, "0.9.29")
|
||||||
|
|
||||||
def test_buefy_css_custom_new(self):
|
def test_buefy_css_custom_new(self):
|
||||||
# nb. this uses same setting as buefy (js)
|
# nb. this uses same setting as buefy (js)
|
||||||
self.config.setdefault("wuttaweb.libver.buefy", "0.9.29")
|
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")
|
version = mod.get_libver(self.request, "buefy.css")
|
||||||
self.assertEqual(version, "0.9.29")
|
self.assertEqual(version, "0.9.29")
|
||||||
|
|
||||||
def test_buefy_css_configured_only(self):
|
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)
|
version = mod.get_libver(self.request, "buefy.css", configured_only=True)
|
||||||
self.assertIsNone(version)
|
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):
|
def test_buefy_css_default_only(self):
|
||||||
self.config.setdefault("wuttaweb.libver.buefy", "0.9.29")
|
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)
|
version = mod.get_libver(self.request, "buefy.css", default_only=True)
|
||||||
self.assertEqual(version, "0.9.25")
|
self.assertEqual(version, "0.9.25")
|
||||||
|
|
||||||
|
|
@ -291,16 +337,31 @@ class TestGetLibUrl(TestCase):
|
||||||
self.assertEqual(url, "/wutta/fanstatic/buefy.js")
|
self.assertEqual(url, "/wutta/fanstatic/buefy.js")
|
||||||
|
|
||||||
def test_buefy_css_default(self):
|
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")
|
url = mod.get_liburl(self.request, "buefy.css")
|
||||||
self.assertEqual(url, "https://unpkg.com/buefy@0.9.25/dist/buefy.min.css")
|
self.assertEqual(url, "https://unpkg.com/buefy@0.9.25/dist/buefy.min.css")
|
||||||
|
|
||||||
def test_buefy_css_custom(self):
|
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")
|
url = mod.get_liburl(self.request, "buefy.css")
|
||||||
self.assertEqual(url, "/lib/buefy.css")
|
self.assertEqual(url, "/lib/buefy.css")
|
||||||
|
|
||||||
def test_buefy_css_fanstatic(self):
|
def test_buefy_css_fanstatic(self):
|
||||||
self.setup_fanstatic()
|
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")
|
url = mod.get_liburl(self.request, "buefy.css")
|
||||||
self.assertEqual(url, "/wutta/fanstatic/buefy.css")
|
self.assertEqual(url, "/wutta/fanstatic/buefy.css")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue