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
from wtforms.fields.html5 import EmailField
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.pe_numbers import PENumbers
@ -58,6 +58,16 @@ def validate_pe_id(field, existing_request):
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):
def reset(self):
"""
@ -119,11 +129,10 @@ class BaseFinancialForm(ValidatedForm):
class FinancialForm(BaseFinancialForm):
def validate_task_order_number(form, field):
try:
TaskOrders.get(field.data)
except NotFoundError:
raise ValidationError("Task Order number not found")
def perform_extra_validation(self, existing_request):
previous_valid = super().perform_extra_validation(existing_request)
task_order_valid = validate_task_order_number(self.task_order_number)
return previous_valid and task_order_valid
@property
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):
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.validate()
form_invalid.perform_extra_validation({})
assert "task_order_number" in form_invalid.errors
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