diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c5de9d..7126fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to WuttJamaican will be documented in this file. 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). +## v0.12.1 (2024-08-22) + +### Fix + +- add app handler methods: `get_node_title()`, `get_node_type()` + ## v0.12.0 (2024-08-15) ### Feat diff --git a/pyproject.toml b/pyproject.toml index b48b385..dab36b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "WuttJamaican" -version = "0.12.0" +version = "0.12.1" description = "Base package for Wutta Framework" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] diff --git a/src/wuttjamaican/app.py b/src/wuttjamaican/app.py index 9b38960..0d1eb77 100644 --- a/src/wuttjamaican/app.py +++ b/src/wuttjamaican/app.py @@ -152,6 +152,45 @@ class AppHandler: return self.config.get(f'{self.appname}.app_title', default=default or self.default_app_title) + def get_node_title(self, default=None): + """ + Returns the configured title for the local app node. + + If none is configured, and no default provided, will return + the value from :meth:`get_title()`. + + :param default: Value to use if the node title is not + configured. + + :returns: Title for the local app node. + """ + title = self.config.get(f'{self.appname}.node_title') + if title: + return title + return self.get_title(default=default) + + def get_node_type(self, default=None): + """ + Returns the "type" of current app node. + + The framework itself does not (yet?) have any notion of what a + node type means. This abstraction is here for convenience, in + case it is needed by a particular app ecosystem. + + :returns: String name for the node type, or ``None``. + + The node type must be configured via file; this cannot be done + with a DB setting. Depending on :attr:`appname` that is like + so: + + .. code-block:: ini + + [wutta] + node_type = warehouse + """ + return self.config.get(f'{self.appname}.node_type', default=default, + usedb=False) + def get_distribution(self, obj=None): """ Returns the appropriate Python distribution name. diff --git a/tests/test_app.py b/tests/test_app.py index d57b756..35ec466 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -179,6 +179,28 @@ class TestAppHandler(TestCase): def test_get_title(self): self.assertEqual(self.app.get_title(), 'WuttJamaican') + def test_get_node_title(self): + + # default + self.assertEqual(self.app.get_node_title(), 'WuttJamaican') + + # will fallback to app title + self.config.setdefault('wuttatest.app_title', "WuttaTest") + self.assertEqual(self.app.get_node_title(), 'WuttaTest') + + # will read from config + self.config.setdefault('wuttatest.node_title', "WuttaNode") + self.assertEqual(self.app.get_node_title(), 'WuttaNode') + + def test_get_node_type(self): + + # default + self.assertIsNone(self.app.get_node_type()) + + # will read from config + self.config.setdefault('wuttatest.node_type', 'warehouse') + self.assertEqual(self.app.get_node_type(), 'warehouse') + def test_get_distribution(self): try: