diff --git a/openerp/addons/base/ir/ir_values.py b/openerp/addons/base/ir/ir_values.py index 18ced2d1e20..7a92e2cec6a 100644 --- a/openerp/addons/base/ir/ir_values.py +++ b/openerp/addons/base/ir/ir_values.py @@ -22,6 +22,7 @@ import pickle from openerp.osv import osv, fields from openerp.osv.orm import except_orm +from openerp.tools.safe_eval import safe_eval as eval EXCLUDED_FIELDS = set(( 'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml', @@ -121,7 +122,10 @@ class ir_values(osv.osv): record = self.browse(cursor, user, id, context=context) if record.key == 'default': # default values are pickled on the fly - value = pickle.dumps(value) + try: + value = isinstance(value, (str, unicode)) and pickle.dumps(eval(value)) or pickle.dumps(value) + except Exception: + value = pickle.dumps(value) self.write(cursor, user, id, {name[:-9]: value}, context=ctx) def onchange_object_id(self, cr, uid, ids, object_id, context=None):