src/pyams_utils/widget/decimal.py
branchdev-tf
changeset 427 63284c98cdc1
parent 292 b338586588ad
equal deleted inserted replaced
426:2022e4da3ad9 427:63284c98cdc1
     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