From 9a9a6ecc9441d9bcdb0fb17d7b9757dfc5001e2a Mon Sep 17 00:00:00 2001 From: richard-dds Date: Mon, 5 Nov 2018 16:57:08 -0500 Subject: [PATCH] Fix json serialization bug in finver form --- atst/filters.py | 8 ++++-- atst/forms/financial.py | 1 + tests/routes/test_financial_verification.py | 32 +++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/atst/filters.py b/atst/filters.py index 217b9e2f..426b9651 100644 --- a/atst/filters.py +++ b/atst/filters.py @@ -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) diff --git a/atst/forms/financial.py b/atst/forms/financial.py index 15ddb955..b4e0ad99 100644 --- a/atst/forms/financial.py +++ b/atst/forms/financial.py @@ -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 + diff --git a/tests/routes/test_financial_verification.py b/tests/routes/test_financial_verification.py index 3c0241dc..8c1f3da4 100644 --- a/tests/routes/test_financial_verification.py +++ b/tests/routes/test_financial_verification.py @@ -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