all string values are unicode

This commit is contained in:
Romain Bignon 2013-04-01 16:48:45 +02:00
commit 0335020963

View file

@ -20,6 +20,7 @@
import re import re
from .ordereddict import OrderedDict from .ordereddict import OrderedDict
from .misc import to_unicode
__all__ = ['ValuesDict', 'Value', 'ValueBackendPassword', 'ValueInt', 'ValueFloat', 'ValueBool'] __all__ = ['ValuesDict', 'Value', 'ValueBackendPassword', 'ValueInt', 'ValueFloat', 'ValueBool']
@ -103,6 +104,8 @@ class Value(object):
Set a value. Set a value.
""" """
self.check_valid(v) self.check_valid(v)
if isinstance(v, str):
v = to_unicode(v)
self._value = v self._value = v
def dump(self): def dump(self):
@ -131,7 +134,7 @@ class ValueBackendPassword(Value):
def load(self, domain, password, callbacks): def load(self, domain, password, callbacks):
self.check_valid(password) self.check_valid(password)
self._domain = domain self._domain = domain
self._value = password self._value = to_unicode(password)
self._callbacks = callbacks self._callbacks = callbacks
def check_valid(self, passwd): def check_valid(self, passwd):
@ -149,7 +152,7 @@ class ValueBackendPassword(Value):
if passwd == '': if passwd == '':
return return
if self._domain is None: if self._domain is None:
self._value = passwd self._value = to_unicode(passwd)
return return
try: try:
@ -157,7 +160,7 @@ class ValueBackendPassword(Value):
import keyring import keyring
keyring.set_password(self._domain, self.id, passwd) keyring.set_password(self._domain, self.id, passwd)
except Exception: except Exception:
self._value = passwd self._value = to_unicode(passwd)
else: else:
self._value = '' self._value = ''
@ -181,11 +184,11 @@ class ValueBackendPassword(Value):
if passwd is not None: if passwd is not None:
# Password has been read in the keyring. # Password has been read in the keyring.
return passwd return to_unicode(passwd)
# Prompt user to enter password by hand. # Prompt user to enter password by hand.
if not self.noprompt and 'login' in self._callbacks: if not self.noprompt and 'login' in self._callbacks:
self._value = self._callbacks['login'](self._domain, self) self._value = to_unicode(self._callbacks['login'](self._domain, self))
if self._value is None: if self._value is None:
self._value = '' self._value = ''
else: else: