Fix json serialization bug in finver form

This commit is contained in:
richard-dds 2018-11-05 16:57:08 -05:00
parent ab6e93550b
commit 9a9a6ecc94
3 changed files with 39 additions and 2 deletions

View File

@ -2,6 +2,7 @@ import re
import datetime
from flask import current_app as app
from werkzeug.datastructures import FileStorage
from atst.models.attachment import Attachment
def iconSvg(name):
@ -47,9 +48,12 @@ def mixedContentToJson(value):
if (
isinstance(value, dict)
and "task_order" in value
and isinstance(value["task_order"], FileStorage)
and (
isinstance(value["task_order"]["pdf"], FileStorage)
or isinstance(value["task_order"]["pdf"], Attachment)
)
):
value["task_order"] = value["task_order"].filename
value["task_order"]["pdf"] = value["task_order"]["pdf"].filename
return app.jinja_env.filters["tojson"](value)

View File

@ -244,3 +244,4 @@ class FinancialVerificationForm(ValidatedForm):
@property
def is_only_missing_task_order_number(self):
return "task_order_number" in self.errors and len(self.errors) == 1

View File

@ -487,3 +487,35 @@ def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
assert UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
# Use finver route to create initial TO #1, complete with PDF
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER}
UpdateFinancialVerification(
TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True
).execute()
# Save draft on a new finver form, but with same number as TO #1
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {"task_order-number": MANUAL_TO_NUMBER}
SaveFinancialVerificationDraft(
TrueValidator,
TaskOrderNumberValidator(),
user,
request,
data,
is_extended=False,
).execute()
# Get finver form
user_session(user)
response = client.get(
url_for("requests.financial_verification", request_id=request.id),
follow_redirects=True,
)
assert response.status_code == 200