# HG changeset patch # User Christophe de Vienne # Date 1410293660 -7200 # Node ID 623707a0c404737dd6d7809438301432445725bb # Parent bf4f5064c7f58cb96f3fb7ad9e76d67000046ba1 [wsgi] Fix posted files filename reading The filenames are parsed by multipart.parse_form_data, which does the unicode decoding. Trying to re-decode the filename was leading to an error. diff -r bf4f5064c7f5 -r 623707a0c404 wsgi/request.py --- a/wsgi/request.py Tue Sep 23 11:18:56 2014 +0200 +++ b/wsgi/request.py Tue Sep 09 22:14:20 2014 +0200 @@ -81,10 +81,7 @@ self.content = environ['wsgi.input'] if files is not None: for key, part in files.iteritems(): - name = None - if part.filename is not None: - name = unicode(part.filename, self.encoding) - self.form[key] = (name, part.file) + self.form[key] = (part.filename, part.file) def __repr__(self): # Since this is called as part of error handling, we need to be very diff -r bf4f5064c7f5 -r 623707a0c404 wsgi/test/unittest_wsgi.py --- a/wsgi/test/unittest_wsgi.py Tue Sep 23 11:18:56 2014 +0200 +++ b/wsgi/test/unittest_wsgi.py Tue Sep 09 22:14:20 2014 +0200 @@ -78,6 +78,17 @@ self.assertEqual([u'1', u'2'], req.form['arg']) + def test_post_files(self): + content_type, params = self.webapp.encode_multipart( + (), (('filefield', 'aname', 'acontent'),)) + r = webtest.app.TestRequest.blank( + '/', POST=params, content_type=content_type) + req = CubicWebWsgiRequest(r.environ, self.vreg) + self.assertIn('filefield', req.form) + fieldvalue = req.form['filefield'] + self.assertEqual(u'aname', fieldvalue[0]) + self.assertEqual('acontent', fieldvalue[1].read()) + def test_post_unicode_urlencoded(self): params = 'arg=%C3%A9' r = webtest.app.TestRequest.blank(