Quarter-Internal/app_common/fields.py

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