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()`
|
* ``'date'`` -> :meth:`render_date()`
|
||||||
* ``'datetime'`` -> :meth:`render_datetime()`
|
* ``'datetime'`` -> :meth:`render_datetime()`
|
||||||
* ``'quantity'`` -> :meth:`render_quantity()`
|
* ``'quantity'`` -> :meth:`render_quantity()`
|
||||||
|
* ``'percent'`` -> :meth:`render_percent()`
|
||||||
|
|
||||||
Renderer overrides are tracked via :attr:`renderers`.
|
Renderer overrides are tracked via :attr:`renderers`.
|
||||||
"""
|
"""
|
||||||
|
@ -622,6 +623,7 @@ class Grid:
|
||||||
'date': self.render_date,
|
'date': self.render_date,
|
||||||
'datetime': self.render_datetime,
|
'datetime': self.render_datetime,
|
||||||
'quantity': self.render_quantity,
|
'quantity': self.render_quantity,
|
||||||
|
'percent': self.render_percent,
|
||||||
}
|
}
|
||||||
|
|
||||||
if renderer in builtins:
|
if renderer in builtins:
|
||||||
|
@ -1884,6 +1886,20 @@ class Grid:
|
||||||
dt = getattr(obj, key)
|
dt = getattr(obj, key)
|
||||||
return self.app.render_datetime(dt)
|
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):
|
def render_quantity(self, obj, key, value):
|
||||||
"""
|
"""
|
||||||
Column renderer for quantity values.
|
Column renderer for quantity values.
|
||||||
|
|
|
@ -1409,6 +1409,24 @@ class TestGrid(WebTestCase):
|
||||||
value = decimal.Decimal('-42.42')
|
value = decimal.Decimal('-42.42')
|
||||||
self.assertEqual(grid.render_currency(obj, 'foo', value), '($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):
|
def test_render_quantity(self):
|
||||||
grid = self.make_grid(columns=['foo', 'bar'])
|
grid = self.make_grid(columns=['foo', 'bar'])
|
||||||
obj = MagicMock()
|
obj = MagicMock()
|
||||||
|
|
Loading…
Reference in a new issue