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:
parent
a6eb65c0af
commit
837a40e3b7
@ -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):
|
||||
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user