From b20c69dec73cbacd43b9ca0b926fd267c8839407 Mon Sep 17 00:00:00 2001 From: Pavel Zuna Date: Fri, 31 Jul 2009 18:01:01 +0200 Subject: Prevent double encoding/decoding when processing compound types. --- ipalib/encoder.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'ipalib/encoder.py') diff --git a/ipalib/encoder.py b/ipalib/encoder.py index 9d9d735a4..22bc54c7e 100644 --- a/ipalib/encoder.py +++ b/ipalib/encoder.py @@ -57,10 +57,11 @@ class Encoder(object): def _decode_dict_val(self, key, val): f = self.encoder_settings.decode_dict_vals_table.get( - self.encoder_settings.decode_dict_vals_table_keygen(key, val), - self.decode + self.encoder_settings.decode_dict_vals_table_keygen(key, val) ) - return f(val) + if f: + return val + return self.decode(val) def encode(self, var): """ @@ -70,7 +71,9 @@ class Encoder(object): Returns an encoded copy of 'var'. """ - if isinstance(var, basestring): + if isinstance(var, str): + return var + elif isinstance(var, unicode): return self.encoder_settings.encode_postprocessor( var.encode(self.encoder_settings.encode_to) ) @@ -122,7 +125,9 @@ class Encoder(object): Returns a decoded copy of 'var'. """ - if isinstance(var, basestring): + if isinstance(var, unicode): + return var + elif isinstance(var, str): return self.encoder_settings.decode_postprocessor( var.decode(self.encoder_settings.decode_from) ) -- cgit