fix: add scale
kwarg for WuttaMoney
schema type, widget
This commit is contained in:
parent
b73127e350
commit
7f09ca5ede
|
@ -164,9 +164,13 @@ class WuttaMoney(colander.Money):
|
||||||
by default.
|
by default.
|
||||||
|
|
||||||
:param request: Current :term:`request` object.
|
:param request: Current :term:`request` object.
|
||||||
|
|
||||||
|
:param scale: If this kwarg is specified, it will be passed along
|
||||||
|
to the widget constructor.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, request, *args, **kwargs):
|
def __init__(self, request, *args, **kwargs):
|
||||||
|
self.scale = kwargs.pop('scale', None)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.request = request
|
self.request = request
|
||||||
self.config = self.request.wutta_config
|
self.config = self.request.wutta_config
|
||||||
|
@ -174,6 +178,8 @@ class WuttaMoney(colander.Money):
|
||||||
|
|
||||||
def widget_maker(self, **kwargs):
|
def widget_maker(self, **kwargs):
|
||||||
""" """
|
""" """
|
||||||
|
if self.scale:
|
||||||
|
kwargs.setdefault('scale', self.scale)
|
||||||
return widgets.WuttaMoneyInputWidget(self.request, **kwargs)
|
return widgets.WuttaMoneyInputWidget(self.request, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -206,9 +206,13 @@ class WuttaMoneyInputWidget(MoneyInputWidget):
|
||||||
* ``moneyinput``
|
* ``moneyinput``
|
||||||
|
|
||||||
:param request: Current :term:`request` object.
|
:param request: Current :term:`request` object.
|
||||||
|
|
||||||
|
:param scale: If this kwarg is specified, it will be passed along
|
||||||
|
to ``render_currency()`` call.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, request, *args, **kwargs):
|
def __init__(self, request, *args, **kwargs):
|
||||||
|
self.scale = kwargs.pop('scale', 2)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.request = request
|
self.request = request
|
||||||
self.config = self.request.wutta_config
|
self.config = self.request.wutta_config
|
||||||
|
@ -221,7 +225,8 @@ class WuttaMoneyInputWidget(MoneyInputWidget):
|
||||||
if cstruct in (colander.null, None):
|
if cstruct in (colander.null, None):
|
||||||
return HTML.tag('span')
|
return HTML.tag('span')
|
||||||
cstruct = decimal.Decimal(cstruct)
|
cstruct = decimal.Decimal(cstruct)
|
||||||
return HTML.tag('span', c=[self.app.render_currency(cstruct)])
|
text = self.app.render_currency(cstruct, scale=self.scale)
|
||||||
|
return HTML.tag('span', c=[text])
|
||||||
|
|
||||||
return super().serialize(field, cstruct, **kw)
|
return super().serialize(field, cstruct, **kw)
|
||||||
|
|
||||||
|
|
|
@ -85,9 +85,18 @@ class TestWuttaMoney(WebTestCase):
|
||||||
|
|
||||||
def test_widget_maker(self):
|
def test_widget_maker(self):
|
||||||
enum = self.app.enum
|
enum = self.app.enum
|
||||||
|
|
||||||
|
# default scale
|
||||||
typ = mod.WuttaMoney(self.request)
|
typ = mod.WuttaMoney(self.request)
|
||||||
widget = typ.widget_maker()
|
widget = typ.widget_maker()
|
||||||
self.assertIsInstance(widget, widgets.WuttaMoneyInputWidget)
|
self.assertIsInstance(widget, widgets.WuttaMoneyInputWidget)
|
||||||
|
self.assertEqual(widget.scale, 2)
|
||||||
|
|
||||||
|
# custom scale
|
||||||
|
typ = mod.WuttaMoney(self.request, scale=4)
|
||||||
|
widget = typ.widget_maker()
|
||||||
|
self.assertIsInstance(widget, widgets.WuttaMoneyInputWidget)
|
||||||
|
self.assertEqual(widget.scale, 4)
|
||||||
|
|
||||||
|
|
||||||
class TestWuttaQuantity(WebTestCase):
|
class TestWuttaQuantity(WebTestCase):
|
||||||
|
|
Loading…
Reference in a new issue