Use custom validator for CLIN funding
This commit is contained in:
parent
e9bd1b596d
commit
96ad2334f7
@ -7,7 +7,7 @@ from wtforms.fields import (
|
|||||||
HiddenField,
|
HiddenField,
|
||||||
)
|
)
|
||||||
from wtforms.fields.html5 import DateField
|
from wtforms.fields.html5 import DateField
|
||||||
from wtforms.validators import Required, Optional, Length, NumberRange
|
from wtforms.validators import Required, Optional, Length, NumberRange, ValidationError
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from numbers import Number
|
from numbers import Number
|
||||||
@ -28,6 +28,17 @@ def coerce_enum(enum_inst):
|
|||||||
return enum_inst
|
return enum_inst
|
||||||
|
|
||||||
|
|
||||||
|
def validate_funding(form, field):
|
||||||
|
if (
|
||||||
|
isinstance(form.total_amount.data, Number)
|
||||||
|
and isinstance(field.data, Number)
|
||||||
|
and form.total_amount.data < field.data
|
||||||
|
):
|
||||||
|
raise ValidationError(
|
||||||
|
translate("forms.task_order.clin_funding_errors.obligated_amount_error")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class CLINForm(FlaskForm):
|
class CLINForm(FlaskForm):
|
||||||
jedi_clin_type = SelectField(
|
jedi_clin_type = SelectField(
|
||||||
translate("task_orders.form.clin_type_label"),
|
translate("task_orders.form.clin_type_label"),
|
||||||
@ -63,11 +74,12 @@ class CLINForm(FlaskForm):
|
|||||||
obligated_amount = DecimalField(
|
obligated_amount = DecimalField(
|
||||||
label=translate("task_orders.form.obligated_funds_label"),
|
label=translate("task_orders.form.obligated_funds_label"),
|
||||||
validators=[
|
validators=[
|
||||||
|
validate_funding,
|
||||||
NumberRange(
|
NumberRange(
|
||||||
0,
|
0,
|
||||||
MAX_CLIN_AMOUNT,
|
MAX_CLIN_AMOUNT,
|
||||||
translate("forms.task_order.clin_funding_errors.funding_range_error"),
|
translate("forms.task_order.clin_funding_errors.funding_range_error"),
|
||||||
)
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -108,16 +120,6 @@ class CLINForm(FlaskForm):
|
|||||||
)
|
)
|
||||||
valid = False
|
valid = False
|
||||||
|
|
||||||
if (
|
|
||||||
isinstance(self.total_amount.data, Number)
|
|
||||||
and isinstance(self.obligated_amount.data, Number)
|
|
||||||
and self.total_amount.data < self.obligated_amount.data
|
|
||||||
):
|
|
||||||
self.obligated_amount.errors.append(
|
|
||||||
translate("forms.task_order.clin_funding_errors.obligated_amount_error")
|
|
||||||
)
|
|
||||||
valid = False
|
|
||||||
|
|
||||||
return valid
|
return valid
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user