From f292850d05c7f83334cd2f4156264112e01a4377 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 22 Aug 2024 14:57:39 -0500 Subject: [PATCH 01/65] test: fix some tests --- tests/grids/test_core.py | 2 +- tests/views/wutta/test_people.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/grids/test_core.py b/tests/grids/test_core.py index 5169e599..4d143c85 100644 --- a/tests/grids/test_core.py +++ b/tests/grids/test_core.py @@ -135,7 +135,7 @@ class TestGrid(WebTestCase): def test_set_label(self): model = self.app.model - grid = self.make_grid(model_class=model.Setting) + grid = self.make_grid(model_class=model.Setting, filterable=True) self.assertEqual(grid.labels, {}) # basic diff --git a/tests/views/wutta/test_people.py b/tests/views/wutta/test_people.py index f178a64f..31aeb501 100644 --- a/tests/views/wutta/test_people.py +++ b/tests/views/wutta/test_people.py @@ -38,7 +38,7 @@ class TestPersonView(WebTestCase): def test_configure_form(self): model = self.app.model - barney = model.User(username='barney') + barney = model.Person(display_name="Barney Rubble") self.session.add(barney) self.session.commit() view = self.make_view() From 7b40c527c860e95be4dd74e09b2344b672110d98 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 22 Aug 2024 15:14:11 -0500 Subject: [PATCH 02/65] fix: misc. bugfixes per recent changes --- tailbone/grids/core.py | 23 +++++++++-------------- tailbone/views/email.py | 11 +++++------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py index e58315d3..754868bc 100644 --- a/tailbone/grids/core.py +++ b/tailbone/grids/core.py @@ -260,6 +260,9 @@ class Grid(WuttaGrid): # reference grid.vue_component etc. kwargs.setdefault('vue_tagname', 'tailbone-grid') + # nb. these must be set before super init, as they are + # referenced when constructing filters + self.assume_local_times = assume_local_times self.use_byte_string_filters = use_byte_string_filters kwargs['key'] = key @@ -279,7 +282,6 @@ class Grid(WuttaGrid): self.width = width self.enums = enums or {} - self.assume_local_times = assume_local_times self.renderers = self.make_default_renderers(self.renderers) self.raw_renderers = raw_renderers or {} self.invisible = invisible or [] @@ -476,25 +478,18 @@ class Grid(WuttaGrid): def set_filter(self, key, *args, **kwargs): """ """ - if len(args) == 1: if args[0] is None: warnings.warn("specifying None is deprecated for Grid.set_filter(); " "please use Grid.remove_filter() instead", DeprecationWarning, stacklevel=2) self.remove_filter(key) - else: - super().set_filter(key, args[0], **kwargs) + return - elif len(args) == 0: - super().set_filter(key, **kwargs) - - else: - warnings.warn("multiple args are deprecated for Grid.set_filter(); " - "please refactor your code accordingly", - DeprecationWarning, stacklevel=2) - kwargs.setdefault('label', self.get_label(key)) - self.filters[key] = self.make_filter(key, *args, **kwargs) + # TODO: our make_filter() signature differs from upstream, + # so must call it explicitly instead of delegating to super + kwargs.setdefault('label', self.get_label(key)) + self.filters[key] = self.make_filter(key, *args, **kwargs) def set_click_handler(self, key, handler): if handler: @@ -1230,7 +1225,7 @@ class Grid(WuttaGrid): context['data_prop'] = data_prop context['empty_labels'] = empty_labels if 'grid_columns' not in context: - context['grid_columns'] = self.get_table_columns() + context['grid_columns'] = self.get_vue_columns() context.setdefault('paginated', False) if context['paginated']: context.setdefault('per_page', 20) diff --git a/tailbone/views/email.py b/tailbone/views/email.py index a99e8553..98bd4295 100644 --- a/tailbone/views/email.py +++ b/tailbone/views/email.py @@ -116,11 +116,12 @@ class EmailSettingView(MasterView): return data def configure_grid(self, g): - g.sorters['key'] = g.make_simple_sorter('key', foldcase=True) - g.sorters['prefix'] = g.make_simple_sorter('prefix', foldcase=True) - g.sorters['subject'] = g.make_simple_sorter('subject', foldcase=True) - g.sorters['enabled'] = g.make_simple_sorter('enabled') + super().configure_grid(g) + + g.sort_on_backend = False + g.sort_multiple = False g.set_sort_defaults('key') + g.set_type('enabled', 'boolean') g.set_link('key') g.set_link('subject') @@ -130,11 +131,9 @@ class EmailSettingView(MasterView): # to g.set_renderer('to', self.render_to_short) - g.sorters['to'] = g.make_simple_sorter('to', foldcase=True) # hidden if self.has_perm('configure'): - g.sorters['hidden'] = g.make_simple_sorter('hidden') g.set_type('hidden', 'boolean') else: g.remove('hidden') From 7d6f75bb05bbbe2345e0f220f9c7a536c8f119e3 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 22 Aug 2024 15:33:28 -0500 Subject: [PATCH 03/65] =?UTF-8?q?bump:=20version=200.21.0=20=E2=86=92=200.?= =?UTF-8?q?21.1?= 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 c54d5642..3bcbc6ec 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.21.1 (2024-08-22) + +### Fix + +- misc. bugfixes per recent changes + ## v0.21.0 (2024-08-22) ### Feat diff --git a/pyproject.toml b/pyproject.toml index 613d3272..2db880ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "Tailbone" -version = "0.21.0" +version = "0.21.1" description = "Backoffice Web Application for Rattail" readme = "README.rst" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] From c176d978701648904c1cd00725cf9057fafbe26e Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 22 Aug 2024 15:54:15 -0500 Subject: [PATCH 04/65] fix: avoid deprecated `component` form kwarg --- tailbone/views/batch/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tailbone/views/batch/core.py b/tailbone/views/batch/core.py index 5dd7b548..8ee3a37d 100644 --- a/tailbone/views/batch/core.py +++ b/tailbone/views/batch/core.py @@ -861,7 +861,7 @@ class BatchMasterView(MasterView): if not schema: schema = colander.Schema() - kwargs['component'] = 'execute-form' + kwargs['vue_tagname'] = 'execute-form' form = forms.Form(schema=schema, request=self.request, defaults=defaults, **kwargs) self.configure_execute_form(form) return form From 4c3e3aeb6a70ae45eb16a90cc53c1af336e6d083 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Thu, 22 Aug 2024 17:09:58 -0500 Subject: [PATCH 05/65] fix: various fixes for waterpark theme --- tailbone/templates/base.mako | 2 +- tailbone/templates/themes/waterpark/base.mako | 83 +++++++++++++++++++ tailbone/templates/themes/waterpark/form.mako | 8 ++ 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/tailbone/templates/base.mako b/tailbone/templates/base.mako index eb950011..c01b3b37 100644 --- a/tailbone/templates/base.mako +++ b/tailbone/templates/base.mako @@ -668,7 +668,7 @@ text="Edit This"> % endif - % if getattr(master, 'cloneable', False) and master.has_perm('clone'): + % if getattr(master, 'cloneable', False) and not master.cloning and master.has_perm('clone'): diff --git a/tailbone/templates/themes/waterpark/base.mako b/tailbone/templates/themes/waterpark/base.mako index 878090dc..520e18ce 100644 --- a/tailbone/templates/themes/waterpark/base.mako +++ b/tailbone/templates/themes/waterpark/base.mako @@ -7,6 +7,7 @@ <%def name="base_styles()"> ${parent.base_styles()} + ${h.stylesheet_link(request.static_url('tailbone:static/css/diffs.css') + '?ver={}'.format(tailbone.__version__))}