feat: move "basic" grid pagination logic to wuttaweb

so far only "simple" pagination is supported by wuttaweb, so basically
the main feature flag, page size, current page.  in this
scenario *all* data is written to client-side JSON and Buefy handles
the actual pagination.

backend pagination coming soon for wuttaweb but for now tailbone still
handles all that.
This commit is contained in:
Lance Edgar 2024-08-16 18:45:04 -05:00
parent 2a0b6da2f9
commit 9da2a148c6
5 changed files with 195 additions and 47 deletions

View file

@ -19,6 +19,32 @@ class TestGrid(WebTestCase):
grid = self.make_grid('foo')
self.assertIsInstance(grid, mod.Grid)
def test_deprecated_params(self):
# component
grid = self.make_grid()
self.assertEqual(grid.vue_tagname, 'tailbone-grid')
grid = self.make_grid(component='blarg')
self.assertEqual(grid.vue_tagname, 'blarg')
# pageable
grid = self.make_grid()
self.assertFalse(grid.paginated)
grid = self.make_grid(pageable=True)
self.assertTrue(grid.paginated)
# default_pagesize
grid = self.make_grid()
self.assertEqual(grid.pagesize, 20)
grid = self.make_grid(default_pagesize=15)
self.assertEqual(grid.pagesize, 15)
# default_page
grid = self.make_grid()
self.assertEqual(grid.page, 1)
grid = self.make_grid(default_page=42)
self.assertEqual(grid.page, 42)
def test_vue_tagname(self):
# default
@ -133,6 +159,66 @@ class TestGrid(WebTestCase):
grid.set_action_urls(setting, setting, 0)
self.assertEqual(setting['_action_url_view'], '/blarg')
def test_pageable(self):
grid = self.make_grid()
self.assertFalse(grid.paginated)
grid.pageable = True
self.assertTrue(grid.paginated)
grid.paginated = False
self.assertFalse(grid.pageable)
def test_get_pagesize_options(self):
grid = self.make_grid()
# default
options = grid.get_pagesize_options()
self.assertEqual(options, [5, 10, 20, 50, 100, 200])
# override default
options = grid.get_pagesize_options(default=[42])
self.assertEqual(options, [42])
# from legacy config
self.config.setdefault('tailbone.grid.pagesize_options', '1 2 3')
grid = self.make_grid()
options = grid.get_pagesize_options()
self.assertEqual(options, [1, 2, 3])
# from new config
self.config.setdefault('wuttaweb.grids.default_pagesize_options', '4, 5, 6')
grid = self.make_grid()
options = grid.get_pagesize_options()
self.assertEqual(options, [4, 5, 6])
def test_get_pagesize(self):
grid = self.make_grid()
# default
size = grid.get_pagesize()
self.assertEqual(size, 20)
# override default
size = grid.get_pagesize(default=42)
self.assertEqual(size, 42)
# override default options
self.config.setdefault('wuttaweb.grids.default_pagesize_options', '10 15 30')
grid = self.make_grid()
size = grid.get_pagesize()
self.assertEqual(size, 10)
# from legacy config
self.config.setdefault('tailbone.grid.default_pagesize', '12')
grid = self.make_grid()
size = grid.get_pagesize()
self.assertEqual(size, 12)
# from new config
self.config.setdefault('wuttaweb.grids.default_pagesize', '15')
grid = self.make_grid()
size = grid.get_pagesize()
self.assertEqual(size, 15)
def test_render_vue_tag(self):
model = self.app.model