From 96ad2334f7eecda490c0c47805e123cee62d4d8b Mon Sep 17 00:00:00 2001 From: graham-dds Date: Thu, 12 Sep 2019 15:50:36 -0400 Subject: [PATCH] Use custom validator for CLIN funding --- atst/forms/task_order.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index af56be6b..ddf029f8 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -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