From 3cdacaaf0a8454fd96e542bc8bd50b7dc3c4583a Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Thu, 27 Sep 2018 17:55:18 +0100 Subject: [PATCH] Introduce validation and error handling for validation preview --- app/main/forms.py | 5 ++++- app/main/views/platform_admin.py | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index 0ce88c6b0..91df7bc59 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -769,7 +769,10 @@ class ServiceUpdateEmailBranding(StripWhitespaceForm): class PDFUploadForm(StripWhitespaceForm): file = FileField_wtf( 'Upload a letter in PDF format to check if it fits in the printable area', - validators=[FileAllowed(['pdf'], 'PDF documents only!')] + validators=[ + FileAllowed(['pdf'], 'PDF documents only!'), + DataRequired(message="You need to upload a file to submit") + ] ) diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index 5faf5e29c..8594078c5 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -248,13 +248,19 @@ def platform_admin_letter_validation_preview(): message, pages, result = None, [], None form = PDFUploadForm() - if request.method == "POST": + if form.validate_on_submit(): pdf_file = form.file.data - response = validate_letter(pdf_file) - if response.status_code == 200: - pages=response.json()["pages"] - message = response.json()["message"] - result = response.json()["result"] + try: + response = validate_letter(pdf_file) + if response.status_code == 200: + pages=response.json()["pages"] + message = response.json()["message"] + result = response.json()["result"] + except HTTPError as error: + if error.status_code == 400: + flash("Something was wrong with the file you tried to upload. Please upload a valid PDF file.") + else: + raise e return render_template( 'views/platform-admin/letter-validation-preview.html',