Use custom validator for CLIN funding
This commit is contained in:
parent
e9bd1b596d
commit
96ad2334f7
@ -7,7 +7,7 @@ from wtforms.fields import (
|
||||
HiddenField,
|
||||
)
|
||||
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 datetime import datetime
|
||||
from numbers import Number
|
||||
@ -28,6 +28,17 @@ def coerce_enum(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):
|
||||
jedi_clin_type = SelectField(
|
||||
translate("task_orders.form.clin_type_label"),
|
||||
@ -63,11 +74,12 @@ class CLINForm(FlaskForm):
|
||||
obligated_amount = DecimalField(
|
||||
label=translate("task_orders.form.obligated_funds_label"),
|
||||
validators=[
|
||||
validate_funding,
|
||||
NumberRange(
|
||||
0,
|
||||
MAX_CLIN_AMOUNT,
|
||||
translate("forms.task_order.clin_funding_errors.funding_range_error"),
|
||||
)
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
@ -108,16 +120,6 @@ class CLINForm(FlaskForm):
|
||||
)
|
||||
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
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user