persist partial financial form data if task order number not found

This commit is contained in:
dandds 2018-08-21 15:26:28 -04:00
parent 70cc82a1e7
commit 6c67166e86
2 changed files with 18 additions and 8 deletions

View File

@ -1,7 +1,7 @@
import re import re
from wtforms.fields.html5 import EmailField from wtforms.fields.html5 import EmailField
from wtforms.fields import StringField from wtforms.fields import StringField
from wtforms.validators import Required, Email, Regexp, ValidationError from wtforms.validators import Required, Email, Regexp
from atst.domain.exceptions import NotFoundError from atst.domain.exceptions import NotFoundError
from atst.domain.pe_numbers import PENumbers from atst.domain.pe_numbers import PENumbers
@ -58,6 +58,16 @@ def validate_pe_id(field, existing_request):
return True return True
def validate_task_order_number(field):
try:
TaskOrders.get(field.data)
except NotFoundError:
field.errors += ("Task Order number not found",)
return False
return True
class BaseFinancialForm(ValidatedForm): class BaseFinancialForm(ValidatedForm):
def reset(self): def reset(self):
""" """
@ -119,11 +129,10 @@ class BaseFinancialForm(ValidatedForm):
class FinancialForm(BaseFinancialForm): class FinancialForm(BaseFinancialForm):
def validate_task_order_number(form, field): def perform_extra_validation(self, existing_request):
try: previous_valid = super().perform_extra_validation(existing_request)
TaskOrders.get(field.data) task_order_valid = validate_task_order_number(self.task_order_number)
except NotFoundError: return previous_valid and task_order_valid
raise ValidationError("Task Order number not found")
@property @property
def is_missing_task_order_number(self): def is_missing_task_order_number(self):

View File

@ -71,13 +71,14 @@ def test_ba_code_validation(input_, expected):
def test_task_order_number_validation(monkeypatch): def test_task_order_number_validation(monkeypatch):
monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient()) monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient())
monkeypatch.setattr("atst.forms.financial.validate_pe_id", lambda *args: True)
form_invalid = FinancialForm(data={"task_order_number": "1234"}) form_invalid = FinancialForm(data={"task_order_number": "1234"})
form_invalid.validate() form_invalid.perform_extra_validation({})
assert "task_order_number" in form_invalid.errors assert "task_order_number" in form_invalid.errors
form_valid = FinancialForm(data={"task_order_number": MockEDAClient.MOCK_CONTRACT_NUMBER}, eda_client=MockEDAClient()) form_valid = FinancialForm(data={"task_order_number": MockEDAClient.MOCK_CONTRACT_NUMBER}, eda_client=MockEDAClient())
form_valid.validate() form_valid.perform_extra_validation({})
assert "task_order_number" not in form_valid.errors assert "task_order_number" not in form_valid.errors