diff --git a/atst/forms/financial.py b/atst/forms/financial.py index 61d334cd..55abaf78 100644 --- a/atst/forms/financial.py +++ b/atst/forms/financial.py @@ -6,7 +6,7 @@ from wtforms.validators import InputRequired, Email, Regexp, Optional from flask_wtf.file import FileAllowed from .fields import NewlineListField, SelectField, NumberStringField -from .forms import ValidatedForm +from atst.forms.forms import ValidatedForm from .data import FUNDING_TYPES from .validators import DateRange @@ -30,9 +30,21 @@ class BaseFinancialForm(ValidatedForm): self.uii_ids.process_data(self.uii_ids.data) def validate_draft(self): + """ + Another stupid workaround. Maybe there isn't a better way. + + Make all fields optional before validation, and then return them to + their previous state. + """ for field in self: field.validators.insert(0, Optional()) - return self.validate() + + valid = self.validate() + + for field in self: + field.validators.pop(0) + + return valid @property def is_missing_task_order_number(self): diff --git a/tests/routes/test_financial_verification.py b/tests/routes/test_financial_verification.py index 551f16ad..5fa4e978 100644 --- a/tests/routes/test_financial_verification.py +++ b/tests/routes/test_financial_verification.py @@ -61,7 +61,6 @@ def test_update_fv(fv_data): assert updated_request.is_pending_ccpo_approval - def test_update_fv_re_enter_pe_number(fv_data): request = RequestFactory.create() user = UserFactory.create() @@ -186,6 +185,20 @@ def test_save_draft_re_enter_pe_number(fv_data): save_fv.execute() +def test_save_draft_and_then_submit(): + request = RequestFactory.create() + user = UserFactory.create() + data = {"ba_code": "02A"} + updated_request = SaveFinancialVerificationDraft( + TrueValidator, TrueValidator, user, request, data, is_extended=False + ).execute() + + with pytest.raises(FormValidationError): + UpdateFinancialVerification( + TrueValidator, TrueValidator, user, updated_request, data + ).execute() + + def test_update_fv_route(client, user_session, fv_data): user = UserFactory.create() request = RequestFactory.create(creator=user)