Enforces unicode decoding of data

The underlying APIs changed between Python2 and Python3, where
once they returned a string, they now return bytes. This change
enforces the decoding of the returned value as a UTF-8. Failure
to decode is handled by the existing exception handling.

Tests were updated to mimic the new API.

Change-Id: I98b474840a163f60e98aed0f75bc6b9df2a9aa00
Story: 2003343
Task: 24381
This commit is contained in:
mareklycka 2018-08-08 08:47:41 +02:00 committed by Marek Lyčka
parent a6eb65c0af
commit 837a40e3b7
2 changed files with 11 additions and 11 deletions

View File

@ -203,16 +203,16 @@ class TemplateForm(forms.SelfHandlingForm):
log_template_name = files[upload_str].name
LOG.info('got upload %s', log_template_name)
tpl = files[upload_str].read()
if tpl.startswith('{'):
try:
try:
tpl = files[upload_str].read().decode('utf-8')
if tpl.startswith('{'):
json.loads(tpl)
except Exception as e:
msg = _('There was a problem parsing the'
' %(prefix)s: %(error)s')
msg = msg % {'prefix': prefix, 'error': six.text_type(e)}
raise forms.ValidationError(msg)
cleaned[data_str] = tpl
cleaned[data_str] = tpl
except Exception as e:
msg = _('There was a problem parsing the'
' %(prefix)s: %(error)s')
msg = msg % {'prefix': prefix, 'error': six.text_type(e)}
raise forms.ValidationError(msg)
# URL handler
elif url and (has_upload or data):

View File

@ -918,7 +918,7 @@ class TemplateFormTests(test.TestCase):
}
json_str = '{notvalidjson::::::json/////json'
files = {'template_upload':
self.SimpleFile('template_name', json_str)}
self.SimpleFile('template_name', json_str.encode('utf-8'))}
self.assertRaises(
exceptions.ValidationError,
@ -937,7 +937,7 @@ class TemplateFormTests(test.TestCase):
json_str = '{"isvalid":"json"}'
files = {'template_upload':
self.SimpleFile('template_name', json_str)}
self.SimpleFile('template_name', json_str.encode('utf-8'))}
t.clean_uploaded_files('template', 'template', precleaned, files)
self.assertEqual(