fix: add render_percent()
method for Grid
also shortcut for grid.set_renderer()
This commit is contained in:
parent
a66312b667
commit
29d3183a88
|
@ -612,6 +612,7 @@ class Grid:
|
|||
* ``'date'`` -> :meth:`render_date()`
|
||||
* ``'datetime'`` -> :meth:`render_datetime()`
|
||||
* ``'quantity'`` -> :meth:`render_quantity()`
|
||||
* ``'percent'`` -> :meth:`render_percent()`
|
||||
|
||||
Renderer overrides are tracked via :attr:`renderers`.
|
||||
"""
|
||||
|
@ -622,6 +623,7 @@ class Grid:
|
|||
'date': self.render_date,
|
||||
'datetime': self.render_datetime,
|
||||
'quantity': self.render_quantity,
|
||||
'percent': self.render_percent,
|
||||
}
|
||||
|
||||
if renderer in builtins:
|
||||
|
@ -1884,6 +1886,20 @@ class Grid:
|
|||
dt = getattr(obj, key)
|
||||
return self.app.render_datetime(dt)
|
||||
|
||||
def render_percent(self, obj, key, value, **kwargs):
|
||||
"""
|
||||
Column renderer for percentage values.
|
||||
|
||||
This calls
|
||||
:meth:`~wuttjamaican:wuttjamaican.app.AppHandler.render_percent()`
|
||||
for the return value.
|
||||
|
||||
This is not used automatically but you can use it explicitly::
|
||||
|
||||
grid.set_renderer('foo', 'percent')
|
||||
"""
|
||||
return self.app.render_percent(value, **kwargs)
|
||||
|
||||
def render_quantity(self, obj, key, value):
|
||||
"""
|
||||
Column renderer for quantity values.
|
||||
|
|
|
@ -1409,6 +1409,24 @@ class TestGrid(WebTestCase):
|
|||
value = decimal.Decimal('-42.42')
|
||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '($42.42)')
|
||||
|
||||
def test_render_percent(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
obj = MagicMock()
|
||||
|
||||
# null
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', None), "")
|
||||
|
||||
# typical
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', 12.3419), '12.34 %')
|
||||
|
||||
# more decimal places
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', 12.3419, decimals=3), '12.342 %')
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', 12.3419, decimals=4), '12.3419 %')
|
||||
|
||||
# negative
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', -12.3419), '(12.34 %)')
|
||||
self.assertEqual(grid.render_percent(obj, 'foo', -12.3419, decimals=3), '(12.342 %)')
|
||||
|
||||
def test_render_quantity(self):
|
||||
grid = self.make_grid(columns=['foo', 'bar'])
|
||||
obj = MagicMock()
|
||||
|
|
Loading…
Reference in a new issue