fix: add render_percent()
method for app handler
This commit is contained in:
parent
20d4d4d93f
commit
a9d2f32e40
|
@ -772,6 +772,22 @@ class AppHandler:
|
||||||
"""
|
"""
|
||||||
return simple_error(error)
|
return simple_error(error)
|
||||||
|
|
||||||
|
def render_percent(self, value, decimals=2):
|
||||||
|
"""
|
||||||
|
Return a human-friendly display string for the given
|
||||||
|
percentage value, e.g. ``23.45139`` becomes ``"23.45 %"``.
|
||||||
|
|
||||||
|
:param value: The value to be rendered.
|
||||||
|
|
||||||
|
:returns: Display string for the percentage value.
|
||||||
|
"""
|
||||||
|
if value is None:
|
||||||
|
return ""
|
||||||
|
fmt = f'{{:0.{decimals}f}} %'
|
||||||
|
if value < 0:
|
||||||
|
return f'({fmt.format(-value)})'
|
||||||
|
return fmt.format(value)
|
||||||
|
|
||||||
def render_quantity(self, value, empty_zero=False):
|
def render_quantity(self, value, empty_zero=False):
|
||||||
"""
|
"""
|
||||||
Return a human-friendly display string for the given quantity
|
Return a human-friendly display string for the given quantity
|
||||||
|
|
|
@ -491,6 +491,22 @@ app_title = WuttaTest
|
||||||
result = self.app.render_error(error)
|
result = self.app.render_error(error)
|
||||||
self.assertEqual(result, "RuntimeError")
|
self.assertEqual(result, "RuntimeError")
|
||||||
|
|
||||||
|
def test_render_percent(self):
|
||||||
|
|
||||||
|
# null
|
||||||
|
self.assertEqual(self.app.render_percent(None), "")
|
||||||
|
|
||||||
|
# typical
|
||||||
|
self.assertEqual(self.app.render_percent(12.3419), '12.34 %')
|
||||||
|
|
||||||
|
# more decimal places
|
||||||
|
self.assertEqual(self.app.render_percent(12.3419, decimals=3), '12.342 %')
|
||||||
|
self.assertEqual(self.app.render_percent(12.3419, decimals=4), '12.3419 %')
|
||||||
|
|
||||||
|
# negative
|
||||||
|
self.assertEqual(self.app.render_percent(-12.3419), '(12.34 %)')
|
||||||
|
self.assertEqual(self.app.render_percent(-12.3419, decimals=3), '(12.342 %)')
|
||||||
|
|
||||||
def test_render_quantity(self):
|
def test_render_quantity(self):
|
||||||
|
|
||||||
# null
|
# null
|
||||||
|
|
Loading…
Reference in a new issue