From 5a6cdce3450702cb0039e8fc2a8500d32fc9de89 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Mon, 19 May 2014 09:20:34 +0200 Subject: [PATCH] fix unicode issues for values loaded from 'backends' config file --- weboob/tools/application/console.py | 6 +++--- weboob/tools/value.py | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index 8ec602c9..f0093233 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -330,7 +330,7 @@ class ConsoleApplication(BaseApplication): if key not in params or edit: params[key] = self.ask(value, default=params[key] if (key in params) else value.default) else: - print(u' [%s] %s: %s' % (key, value.description, '(masked)' if value.masked else params[key])) + print(u' [%s] %s: %s' % (key, value.description, '(masked)' if value.masked else to_unicode(params[key]))) if asked_config: print('-------------------------%s' % ('-' * len(module.name))) @@ -370,7 +370,7 @@ class ConsoleApplication(BaseApplication): if isinstance(question, Value): v = copy(question) if default is not None: - v.default = default + v.default = to_unicode(default) if isinstance(default, str) else default if masked is not None: v.masked = masked if regexp is not None: @@ -442,7 +442,7 @@ class ConsoleApplication(BaseApplication): if v.tiny: question = u'%s (%s)' % (question, '/'.join((s.upper() if s == v.default else s) - for s in (v.choices.iterkeys()))) + for s in v.choices.iterkeys())) for key, value in v.choices.iteritems(): print(' %s%s%s: %s' % (self.BOLD, key, self.NC, value)) else: diff --git a/weboob/tools/value.py b/weboob/tools/value.py index 39744550..001709b6 100644 --- a/weboob/tools/value.py +++ b/weboob/tools/value.py @@ -66,6 +66,8 @@ class Value(object): self.label = kwargs.get('label', kwargs.get('description', None)) self.description = kwargs.get('description', kwargs.get('label', None)) self.default = kwargs.get('default', None) + if isinstance(self.default, str): + self.default = to_unicode(self.default) self.regexp = kwargs.get('regexp', None) self.choices = kwargs.get('choices', None) if isinstance(self.choices, (list, tuple)): @@ -107,9 +109,9 @@ class Value(object): """ Set a value. """ - self.check_valid(v) if isinstance(v, str): v = to_unicode(v) + self.check_valid(v) self._value = v def dump(self):