From 4221fa50dd95771c84c20473381edcaff006043d Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 14 Feb 2025 11:37:21 -0600 Subject: [PATCH 01/16] fix: fix warning msg for deprecated Grid param --- tailbone/grids/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py index 134642dd..56b97b86 100644 --- a/tailbone/grids/core.py +++ b/tailbone/grids/core.py @@ -235,7 +235,7 @@ class Grid(WuttaGrid): if 'pageable' in kwargs: warnings.warn("pageable param is deprecated for Grid(); " - "please use vue_tagname param instead", + "please use paginated param instead", DeprecationWarning, stacklevel=2) kwargs.setdefault('paginated', kwargs.pop('pageable')) From 7348eec671542fa1317ad68a0816948ee96c76ac Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 18 Feb 2025 11:16:23 -0600 Subject: [PATCH 02/16] fix: stop using old config for logo image url on login page --- tailbone/views/auth.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tailbone/views/auth.py b/tailbone/views/auth.py index 1338c107..eceab803 100644 --- a/tailbone/views/auth.py +++ b/tailbone/views/auth.py @@ -94,10 +94,6 @@ class AuthenticationView(View): else: self.request.session.flash("Invalid username or password", 'error') - image_url = self.rattail_config.get( - 'tailbone', 'main_image_url', - default=self.request.static_url('tailbone:static/img/home_logo.png')) - # nb. hacky..but necessary, to add the refs, for autofocus # (also add key handler, so ENTER acts like TAB) dform = form.make_deform_form() @@ -110,7 +106,6 @@ class AuthenticationView(View): return { 'form': form, 'referrer': referrer, - 'image_url': image_url, 'index_title': app.get_node_title(), 'help_url': global_help_url(self.rattail_config), } From a6508154cb93a376a7ec93efa930534c674364f8 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 18 Feb 2025 12:13:28 -0600 Subject: [PATCH 03/16] docs: update intersphinx doc links per server migration --- docs/conf.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 52e384f5..ade4c92a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -27,10 +27,10 @@ templates_path = ['_templates'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] intersphinx_mapping = { - 'rattail': ('https://rattailproject.org/docs/rattail/', None), + 'rattail': ('https://docs.wuttaproject.org/rattail/', None), 'webhelpers2': ('https://webhelpers2.readthedocs.io/en/latest/', None), - 'wuttaweb': ('https://rattailproject.org/docs/wuttaweb/', None), - 'wuttjamaican': ('https://rattailproject.org/docs/wuttjamaican/', None), + 'wuttaweb': ('https://docs.wuttaproject.org/wuttaweb/', None), + 'wuttjamaican': ('https://docs.wuttaproject.org/wuttjamaican/', None), } # allow todo entries to show up From e2582ffec5f84f97df9cc7d2fdcdf5201b2d135f Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 19 Feb 2025 10:33:39 -0600 Subject: [PATCH 04/16] =?UTF-8?q?bump:=20version=200.22.6=20=E2=86=92=200.?= =?UTF-8?q?22.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b1726a4..c974b3a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to Tailbone 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.22.7 (2025-02-19) + +### Fix + +- stop using old config for logo image url on login page +- fix warning msg for deprecated Grid param + ## v0.22.6 (2025-02-01) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 9e83df80..a7214a8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.6" +version = "0.22.7" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From e15045380171617b32f9dca6bcbda8b2c2472310 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 5 Mar 2025 10:34:52 -0600 Subject: [PATCH 05/16] fix: add startup hack for tempmon DB model --- tailbone/app.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tailbone/app.py b/tailbone/app.py index b7262866..d2d0c5ef 100644 --- a/tailbone/app.py +++ b/tailbone/app.py @@ -62,6 +62,17 @@ def make_rattail_config(settings): # nb. this is for compaibility with wuttaweb settings['wutta_config'] = rattail_config + # must import all sqlalchemy models before things get rolling, + # otherwise can have errors about continuum TransactionMeta class + # not yet mapped, when relevant pages are first requested... + # cf. https://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/database/sqlalchemy.html#importing-all-sqlalchemy-models + # hat tip to https://stackoverflow.com/a/59241485 + if getattr(rattail_config, 'tempmon_engine', None): + from rattail_tempmon.db import model as tempmon_model, Session as TempmonSession + tempmon_session = TempmonSession() + tempmon_session.query(tempmon_model.Appliance).first() + tempmon_session.close() + # configure database sessions if hasattr(rattail_config, 'appdb_engine'): tailbone.db.Session.configure(bind=rattail_config.appdb_engine) From fcc90d25ac79d0168993e653838517d438a7620b Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 20 May 2025 17:23:00 -0500 Subject: [PATCH 06/16] =?UTF-8?q?bump:=20version=200.22.7=20=E2=86=92=200.?= =?UTF-8?q?22.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c974b3a6..c6106236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to Tailbone 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.22.8 (2025-05-20) + +### Fix + +- add startup hack for tempmon DB model + ## v0.22.7 (2025-02-19) ### Fix diff --git a/pyproject.toml b/pyproject.toml index a7214a8e..4a4d5e66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.7" +version = "0.22.8" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From 6f14bb0e88c32475bffda6a75900ed37749f506b Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 6 Sep 2025 12:09:39 -0500 Subject: [PATCH 07/16] fix: small bugfixes per upstream changes --- tailbone/views/master.py | 2 +- tests/grids/test_core.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tailbone/views/master.py b/tailbone/views/master.py index 21a5e58f..cd167c38 100644 --- a/tailbone/views/master.py +++ b/tailbone/views/master.py @@ -343,7 +343,7 @@ class MasterView(View): return self.redirect(self.request.current_route_url(**kw)) # Stash some grid stats, for possible use when generating URLs. - if grid.paginated and hasattr(grid, 'pager'): + if grid.paginated and grid.pager is not None: self.first_visible_grid_index = grid.pager.first_item # return grid data only, if partial page was requested diff --git a/tests/grids/test_core.py b/tests/grids/test_core.py index 4d143c85..e52b0f63 100644 --- a/tests/grids/test_core.py +++ b/tests/grids/test_core.py @@ -341,7 +341,7 @@ class TestGrid(WebTestCase): # settings are loaded, applied, saved self.assertEqual(grid.sort_defaults, []) - self.assertFalse(hasattr(grid, 'active_sorters')) + self.assertIsNone(grid.active_sorters) self.request.GET = {'sort1key': 'name', 'sort1dir': 'desc'} grid.load_settings() self.assertEqual(grid.active_sorters, [{'key': 'name', 'dir': 'desc'}]) @@ -365,7 +365,7 @@ class TestGrid(WebTestCase): # with sort defaults grid = self.make_grid(model_class=model.Setting, sortable=True, sort_on_backend=True, sort_defaults='name') - self.assertFalse(hasattr(grid, 'active_sorters')) + self.assertIsNone(grid.active_sorters) grid.load_settings() self.assertEqual(grid.active_sorters, [{'key': 'name', 'dir': 'asc'}]) @@ -376,7 +376,7 @@ class TestGrid(WebTestCase): mod.SortInfo('name', 'asc'), mod.SortInfo('value', 'desc'), ] - self.assertFalse(hasattr(grid, 'active_sorters')) + self.assertIsNone(grid.active_sorters) grid.load_settings() self.assertEqual(grid.active_sorters, [{'key': 'name', 'dir': 'asc'}]) @@ -390,7 +390,7 @@ class TestGrid(WebTestCase): grid = self.make_grid(key='settings', model_class=model.Setting, sortable=True, sort_on_backend=True, paginated=True, paginate_on_backend=True) - self.assertFalse(hasattr(grid, 'active_sorters')) + self.assertIsNone(grid.active_sorters) grid.load_settings() self.assertEqual(grid.active_sorters, [{'key': 'name', 'dir': 'desc'}]) From 8e7169fb4a8a1d8fef17cad3f4c36f7683fc603b Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 14:11:44 -0500 Subject: [PATCH 08/16] =?UTF-8?q?bump:=20version=200.22.8=20=E2=86=92=200.?= =?UTF-8?q?22.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6106236..68a77a5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to Tailbone 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.22.9 (2025-09-20) + +### Fix + +- small bugfixes per upstream changes + ## v0.22.8 (2025-05-20) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 4a4d5e66..044aa63b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.8" +version = "0.22.9" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From 5a78b0740d5dfdc57bb9730ceb78e5a6e310fcbb Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 14:41:55 -0500 Subject: [PATCH 09/16] fix: fix config extension entry point per upstream changes --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 044aa63b..a25afebf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ webapi = "tailbone.webapi:main" beaker = "tailbone.cleanup:BeakerCleaner" -[project.entry-points."rattail.config.extensions"] +[project.entry-points."wutta.config.extensions"] tailbone = "tailbone.config:ConfigExtension" From 207125bdb3576a4159f6bae4d978e4e8d3ce5945 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 14:47:05 -0500 Subject: [PATCH 10/16] fix: avoid error if 'default' theme not included --- tailbone/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tailbone/util.py b/tailbone/util.py index 71aa35e3..78ab07f0 100644 --- a/tailbone/util.py +++ b/tailbone/util.py @@ -300,8 +300,8 @@ def get_available_themes(rattail_config, include=None): available.sort() # make default theme the first option - i = available.index('default') - if i >= 0: + if 'default' in available: + i = available.index('default') available.pop(i) available.insert(0, 'default') From 3cc37bea3005abe0053daed258548a4d44dbebc5 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 14:47:29 -0500 Subject: [PATCH 11/16] =?UTF-8?q?bump:=20version=200.22.9=20=E2=86=92=200.?= =?UTF-8?q?22.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68a77a5b..56134c50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to Tailbone 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.22.10 (2025-09-20) + +### Fix + +- avoid error if 'default' theme not included +- fix config extension entry point + ## v0.22.9 (2025-09-20) ### Fix diff --git a/pyproject.toml b/pyproject.toml index a25afebf..d6e8ec92 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.9" +version = "0.22.10" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From c230536e49a913457b8b0fa4f21a2204e120df2e Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 15:47:00 -0500 Subject: [PATCH 12/16] fix: avoid error when row object missing field --- tailbone/grids/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py index 56b97b86..b1533747 100644 --- a/tailbone/grids/core.py +++ b/tailbone/grids/core.py @@ -578,7 +578,7 @@ class Grid(WuttaGrid): try: return obj[column_name] - except TypeError: + except (TypeError, KeyError): pass def render_currency(self, obj, column_name): From b62e41966c5b08a5d3b1408f38129afff560d420 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 20 Sep 2025 15:47:20 -0500 Subject: [PATCH 13/16] =?UTF-8?q?bump:=20version=200.22.10=20=E2=86=92=200?= =?UTF-8?q?.22.11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56134c50..6e4739ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to Tailbone 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.22.11 (2025-09-20) + +### Fix + +- avoid error when row object missing field + ## v0.22.10 (2025-09-20) ### Fix diff --git a/pyproject.toml b/pyproject.toml index d6e8ec92..1f0996a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.10" +version = "0.22.11" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From 5ae236f2288e8a9a6d101a535af2e4506184e675 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 4 Oct 2025 10:08:26 -0500 Subject: [PATCH 14/16] fix: depend on latest rattail to bring in sqlalchemy-utils --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1f0996a0..df4af257 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ dependencies = [ "pyramid_mako", "pyramid_retry", "pyramid_tm", - "rattail[db,bouncer]>=0.20.1", + "rattail[db,bouncer]>=0.20.6", "sa-filters", "simplejson", "transaction", From 8a3c147858d054336ffa62e3e360c9fe900f903e Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 19 Oct 2025 13:46:24 -0500 Subject: [PATCH 15/16] feat: require latest rattail; drop passlib dependency should be using bcrypt directly now, even though technically rattail still requires passlib --- pyproject.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index df4af257..9afaf52d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,6 @@ dependencies = [ "openpyxl", "paginate", "paginate_sqlalchemy", - "passlib", "Pillow", "pyramid>=2", "pyramid_beaker", @@ -53,7 +52,7 @@ dependencies = [ "pyramid_mako", "pyramid_retry", "pyramid_tm", - "rattail[db,bouncer]>=0.20.6", + "rattail[db,bouncer]>=0.21.0", "sa-filters", "simplejson", "transaction", From 2500805c544ca5c1f17ea8b4cf47adbfa5ab5476 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 19 Oct 2025 13:47:29 -0500 Subject: [PATCH 16/16] =?UTF-8?q?bump:=20version=200.22.11=20=E2=86=92=200?= =?UTF-8?q?.23.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ++++++++++ pyproject.toml | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e4739ab..d70b9761 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to Tailbone 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.23.0 (2025-10-19) + +### Feat + +- require latest rattail; drop passlib dependency + +### Fix + +- depend on latest rattail + ## v0.22.11 (2025-09-20) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 9afaf52d..2b367c99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.22.11" +version = "0.23.0" description = "Backoffice Web Application for Rattail" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}]