from wtforms.fields import DecimalField from wtforms.validators import Regexp class PercentageField(DecimalField): def __init__(self, label=None, validators=None, **kwargs): # if not validators: # validators = [Regexp('[0-9\.]+[0-9]*%')] super(PercentageField, self).__init__(label, validators=validators, **kwargs) def _value(self): super(PercentageField, self)._value() val = f'{self.data*100.0}%' # val = float(val) return val def process_formdata(self, valuelist): if not valuelist: return self.default raw_data = valuelist[0] val = raw_data.replace('%', '') val = float(val) return val/100.0 class DollarAmountField(DecimalField): def __init__(self, label=None, validators=None, **kwargs): super(DecimalField, self).__init__(label, validators=validators, **kwargs) def _value(self): val = f'${self.data:.2f}' return val def process_formdata(self, valuelist): if not valuelist: return self.default raw_data = valuelist[0] val = raw_data.replace('$', '') val = float(val) return val