42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
|
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
|