From d2cad0b96f54f62ebd910dbe1c3ce46c42691d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 10 Jul 2015 15:06:53 +0200 Subject: [PATCH] forms: fix export of workflow options filled with non-ascii data (#7819) --- tests/test_formdef_import.py | 5 ++++- wcs/formdef.py | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/test_formdef_import.py b/tests/test_formdef_import.py index fc40bae..d26c24a 100644 --- a/tests/test_formdef_import.py +++ b/tests/test_formdef_import.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import sys import shutil import StringIO @@ -139,7 +141,8 @@ def test_modification_time(): def test_workflow_options(): formdef = FormDef() formdef.name = 'workflow options' - formdef.workflow_options = {'foo': 'bar'} + formdef.workflow_options = {'foo': 'bar', + 'foo2': 'baré'} fd2 = assert_xml_import_export_works(formdef) assert fd2.workflow_options == formdef.workflow_options fd2 = assert_json_import_export_works(formdef) diff --git a/wcs/formdef.py b/wcs/formdef.py index b073b05..dd24d53 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -639,7 +639,7 @@ class FormDef(StorableObject): element.attrib['varname'] = option option_value = self.workflow_options.get(option) if isinstance(option_value, basestring): - element.text = self.workflow_options.get(option) + element.text = unicode(self.workflow_options.get(option, ''), charset) else: pass # TODO: extend support to other types @@ -704,7 +704,7 @@ class FormDef(StorableObject): formdef.workflow_options = {} for option in tree.findall('options/option'): - formdef.workflow_options[option.attrib.get('varname')] = option.text + formdef.workflow_options[option.attrib.get('varname')] = option.text.encode(charset) if tree.find('last_modification') is not None: node = tree.find('last_modification') -- 2.1.4