8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 """PyAMS_utils.widget.decimal module |
14 |
14 |
|
15 This module provides a custom data converter for decimal fields using dots as separator |
|
16 """ |
15 |
17 |
16 import decimal |
18 import decimal |
17 |
19 |
18 from z3c.form.converter import BaseDataConverter, FormatterValidationError |
20 from z3c.form.converter import BaseDataConverter, FormatterValidationError |
19 from z3c.form.interfaces import IWidget, IDataConverter |
21 from z3c.form.interfaces import IWidget, IDataConverter |
20 |
22 |
21 from pyams_utils.adapter import adapter_config |
23 from pyams_utils.adapter import adapter_config |
22 from pyams_utils.schema import IDottedDecimalField |
24 from pyams_utils.schema import IDottedDecimalField |
23 |
25 |
|
26 __docformat__ = 'restructuredtext' |
|
27 |
24 from pyams_utils import _ |
28 from pyams_utils import _ |
25 |
29 |
26 |
30 |
27 @adapter_config(context=(IDottedDecimalField, IWidget), provides=IDataConverter) |
31 @adapter_config(context=(IDottedDecimalField, IWidget), provides=IDataConverter) |
28 class DottedDecimalDataConverter(BaseDataConverter): |
32 class DottedDecimalDataConverter(BaseDataConverter): |
29 """Dotted decimal field data converter""" |
33 """Dotted decimal field data converter""" |
30 |
34 |
31 errorMessage = _('The entered value is not a valid decimal literal.') |
35 errorMessage = _('The entered value is not a valid decimal literal.') |
32 |
|
33 def __init__(self, field, widget): |
|
34 super(DottedDecimalDataConverter, self).__init__(field, widget) |
|
35 |
36 |
36 def toWidgetValue(self, value): |
37 def toWidgetValue(self, value): |
37 if not value: |
38 if not value: |
38 return self.field.missing_value |
39 return self.field.missing_value |
39 return value |
40 return value |