dpark: add image conversion to PDF (fixes #26670)
This commit is contained in:
parent
5ca0e833c3
commit
ea546e2524
|
@ -28,6 +28,7 @@ from zeep.helpers import serialize_object
|
|||
from passerelle.base.models import BaseResource
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.conversion import to_pdf
|
||||
from passerelle.views import WrongParameter
|
||||
|
||||
|
||||
|
@ -402,8 +403,13 @@ class DPark(BaseResource):
|
|||
|
||||
# Use raw content as zeep encode the content in base64
|
||||
file_raw_content = base64.b64decode(value['content'])
|
||||
try:
|
||||
pdf_content = to_pdf(file_raw_content)
|
||||
except ValueError as e:
|
||||
errors.append(u'<%s> cannot be converted to PDF: %s' % (key, e))
|
||||
continue
|
||||
attached_files.append({
|
||||
'TypeDocument': doc_id, 'NomFichier': value['filename'], 'Fichier': file_raw_content})
|
||||
'TypeDocument': doc_id, 'NomFichier': value['filename'], 'Fichier': pdf_content})
|
||||
# deduce the number of files
|
||||
if errors:
|
||||
raise APIError(errors)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 107 B |
|
@ -22,6 +22,9 @@ OPERATIONAL_URL = 'https://example.net/dpark'
|
|||
with open(os.path.join(os.path.dirname(__file__), 'data/dpark.awws.wsdl')) as f:
|
||||
WSDL_CONTENT = f.read()
|
||||
|
||||
with open(os.path.join(os.path.dirname(__file__), 'data/small.jpg')) as f:
|
||||
JPEG_CONTENT = f.read()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def dpark(db):
|
||||
|
@ -512,18 +515,19 @@ def test_send_files(dpark, app, settings):
|
|||
|
||||
params['justif_domicile'] = {
|
||||
'filename': 'address_proof.pdf', 'content_type': 'application/pdf',
|
||||
'content': base64.b64encode('this is my proof of address')}
|
||||
'content': base64.b64encode('%PDF this is my proof of address')}
|
||||
params['cartegrise,1'] = {
|
||||
'filename': 'cartegrise.pdf', 'content_type': 'application/pdf',
|
||||
'content': base64.b64encode('carte grise 1')
|
||||
'content': base64.b64encode('%PDF carte grise 1')
|
||||
}
|
||||
params['toto,6'] = {
|
||||
'filename': 'cartegrisetoto.pdf', 'content_type': 'application/pdf',
|
||||
'content': base64.b64encode('whatever')
|
||||
'filename': 'cartegrisetoto.pdf',
|
||||
'content_type': 'application/pdf',
|
||||
'content': base64.b64encode(JPEG_CONTENT)
|
||||
}
|
||||
params['cartegrise,6'] = {
|
||||
'filename': 'cartegrise2.pdf', 'content_type': 'application/pdf',
|
||||
'content': base64.b64encode('carte grise 2')
|
||||
'content': base64.b64encode('%PDF carte grise 2')
|
||||
}
|
||||
params['taxe_habitat'] = {
|
||||
'filename': 'cartegrise2.pdf', 'content_type': 'application/pdf',
|
||||
|
@ -573,13 +577,16 @@ def test_send_files(dpark, app, settings):
|
|||
assert len(pj_node.findall('Bloc_Fichiers')) == 4
|
||||
assert pj_node.findall('Bloc_Fichiers')[0].find('TypeDocument').text == '6'
|
||||
assert pj_node.findall('Bloc_Fichiers')[0].find('NomFichier').text == 'cartegrise.pdf'
|
||||
assert pj_node.findall('Bloc_Fichiers')[0].find('Fichier').text == base64.b64encode('carte grise 1')
|
||||
assert pj_node.findall('Bloc_Fichiers')[0].find('Fichier').text == base64.b64encode('%PDF carte grise 1')
|
||||
assert pj_node.findall('Bloc_Fichiers')[1].find('TypeDocument').text == '6'
|
||||
assert pj_node.findall('Bloc_Fichiers')[1].find('NomFichier').text == 'cartegrise2.pdf'
|
||||
assert pj_node.findall('Bloc_Fichiers')[1].find('Fichier').text == base64.b64encode('carte grise 2')
|
||||
assert pj_node.findall('Bloc_Fichiers')[1].find('Fichier').text == base64.b64encode('%PDF carte grise 2')
|
||||
assert pj_node.findall('Bloc_Fichiers')[2].find('TypeDocument').text == '2'
|
||||
assert pj_node.findall('Bloc_Fichiers')[2].find('NomFichier').text == 'address_proof.pdf'
|
||||
assert pj_node.findall('Bloc_Fichiers')[2].find('Fichier').text == base64.b64encode('this is my proof of address')
|
||||
assert pj_node.findall('Bloc_Fichiers')[2].find('Fichier').text == base64.b64encode(
|
||||
'%PDF this is my proof of address')
|
||||
|
||||
assert pj_node.findall('Bloc_Fichiers')[3].find('TypeDocument').text == '73'
|
||||
assert pj_node.findall('Bloc_Fichiers')[3].find('NomFichier').text == 'cartegrisetoto.pdf'
|
||||
assert pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text == base64.b64encode('whatever')
|
||||
from passerelle.utils.conversion import to_pdf
|
||||
assert pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text == base64.b64encode(to_pdf(JPEG_CONTENT))
|
||||
assert base64.b64decode(pj_node.findall('Bloc_Fichiers')[3].find('Fichier').text).startswith('%PDF')
|
||||
|
|
Loading…
Reference in New Issue