From 4aa96b93c5faf41caede50aeb9751cef351df574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 18 Nov 2019 18:05:31 +0100 Subject: [PATCH] portfolio: pass text to json (#36515) --- tests/test_form_pages.py | 21 ++++++++++++++------- wcs/portfolio.py | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index c65065ebf..767511fb1 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -4,6 +4,7 @@ import datetime import json import pytest import hashlib +import locale import os import re import time @@ -17,6 +18,7 @@ try: except ImportError: Image = None +from django.utils import six from django.utils.six import StringIO, BytesIO from django.utils.six.moves.urllib import parse as urlparse @@ -3552,8 +3554,15 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub, http_post_request.return_value = None, 200, 'null', None resp = resp.form.submit('button_export_to') assert http_post_request.call_count == 1 - assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'" - == caplog.records[-1].message) + if six.PY2: + assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'" + == caplog.records[-1].message) + elif locale.getpreferredencoding() == 'UTF-8': + assert ("file 'template.pdf' pushed to portfolio of 'Foo Baré'" + == caplog.records[-1].message) + else: # Python < 3.7 + assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\xe9'" + == caplog.records[-1].message) resp = resp.follow() # $form/$id/create_doc resp = resp.follow() # $form/$id/create_doc/ @@ -3565,8 +3574,7 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub, http_post_request.return_value = None, 400, 'null', None # fail resp = resp.form.submit('button_export_to') assert http_post_request.call_count == 1 - assert ("file 'template.pdf' failed to be pushed to portfolio of 'Foo Bar\\xc3\\xa9'" - == caplog.records[-1].message) + assert caplog.records[-1].message.startswith("file 'template.pdf' failed to be pushed to portfolio of 'Foo") # failed to push to portfolio, but document is here resp = resp.follow() # $form/$id/create_doc @@ -3587,9 +3595,8 @@ def test_formdata_generated_document_odt_to_pdf_download_push_to_portfolio(pub, assert payload['file_name'] == 'template.pdf' assert payload['user_email'] == 'foo@localhost' assert payload['origin'] == 'example.net' - assert payload['file_b64_content'].decode('base64').startswith('%PDF') - assert ("file 'template.pdf' pushed to portfolio of 'Foo Bar\\xc3\\xa9'" - == caplog.records[-1].message) + assert base64.decodestring(force_bytes(payload['file_b64_content'])).startswith(b'%PDF') + assert caplog.records[-1].message.startswith("file 'template.pdf' pushed to portfolio of 'Foo") assert resp.location == form_location resp = resp.follow() # back to form page diff --git a/wcs/portfolio.py b/wcs/portfolio.py index eee0eaae7..e30113007 100644 --- a/wcs/portfolio.py +++ b/wcs/portfolio.py @@ -92,7 +92,7 @@ def push_document(user, filename, stream): payload['origin'] = urlparse.urlparse(get_publisher().get_frontoffice_url()).netloc payload['file_name'] = force_text(filename, charset) stream.seek(0) - payload['file_b64_content'] = base64.b64encode(stream.read()) + payload['file_b64_content'] = force_text(base64.b64encode(stream.read())) async_post = fargo_post_json_async('/api/documents/push/', payload) def afterjob(job):