Projet

Général

Profil

0001-fields-display-attachment-utf-8-filenames-34783.patch

Nicolas Roche (absent jusqu'au 3 avril), 10 octobre 2019 09:44

Télécharger (3,05 ko)

Voir les différences:

Subject: [PATCH] fields: display attachment utf-8 filenames (#34783)

 tests/test_form_pages.py | 16 ++++++++++++++++
 tests/test_sessions.py   | 17 +++++++++++++++++
 wcs/qommon/sessions.py   |  2 +-
 3 files changed, 34 insertions(+), 1 deletion(-)
tests/test_form_pages.py
2680 2680
    assert 'fargo.js' not in resp.body
2681 2681
    assert 'use-file-from-fargo' not in resp.body
2682 2682

  
2683
def test_form_file_field_upload(pub):
2684
    user = create_user(pub)
2685
    formdef = create_formdef()
2686
    formdef.fields = [fields.FileField(id='0', type='file')]
2687
    formdef.store()
2688
    formdef.data_class().wipe()
2689

  
2690
    upload = Upload(u'C:\\ding\\dong\\téêèst👀.txt', 'foobar', 'text/plain')
2691

  
2692
    resp = get_app(pub).get('/test/')
2693
    resp.forms[0]['f0$file'] = upload
2694
    resp = resp.forms[0].submit('submit')
2695
    assert 'Check values then click submit.' in resp.body
2696
    assert 'dong' not in resp.text
2697
    assert u'téêèst👀.txt' in resp.text
2698

  
2683 2699
def test_form_file_field_submit(pub):
2684 2700
    formdef = create_formdef()
2685 2701
    formdef.fields = [fields.FileField(id='0', label='file')]
tests/test_sessions.py
1
# -*- coding: utf-8 -*-
2

  
1 3
import os
2 4
import shutil
3 5
import time
......
199 201
    assert pub.session_manager.session_class.count() == 1
200 202
    session_id = pub.session_manager.session_class.select()[0].id
201 203
    assert 'COM1' in resp.body
204

  
205
def test_tmp_upload(pub, user, app):
206
    user_agent = {'User-agent': 'Mozilla/5.0'}
207
    files = [('field0', u'C:\\ding\\dong\\téêèst👀.txt', r'file content')]
208

  
209
    # submit a file using the endpoint
210
    resp = app.post('/tmp-upload', headers=user_agent, upload_files=files)
211
    assert resp.json[0]['name'] == u'téêèst👀.txt'
212
    token = resp.json[0]['token']
213

  
214
    # retrieve the file from session
215
    session = pub.session_manager.session_class.select()[0]
216
    tempfile = session.get_tempfile_path(token)
217
    with open(tempfile) as handler:
218
        assert handler.read() == r'file content'
wcs/qommon/sessions.py
282 282
        signer = self.get_signer()
283 283
        data = {
284 284
            'orig_filename': upload.orig_filename,
285
            'base_filename': upload.base_filename,
285
            'base_filename': os.path.basename(upload.orig_filename),
286 286
            'content_type': upload.content_type,
287 287
            'charset': upload.charset,
288 288
            'size': size,
289
-