[FIX] base: centralize custom data serialization for builtin types only
This commit is contained in:
parent
000c681f1e
commit
cc724c2e61
|
@ -18,11 +18,11 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
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
|
||||
from openerp.tools import pickle
|
||||
|
||||
EXCLUDED_FIELDS = set((
|
||||
'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml',
|
||||
|
|
|
@ -49,7 +49,6 @@ import datetime
|
|||
import itertools
|
||||
import logging
|
||||
import operator
|
||||
import pickle
|
||||
import re
|
||||
import simplejson
|
||||
import time
|
||||
|
@ -65,7 +64,7 @@ import openerp
|
|||
import openerp.netsvc as netsvc
|
||||
import openerp.tools as tools
|
||||
from openerp.tools.config import config
|
||||
from openerp.tools.misc import CountingStream
|
||||
from openerp.tools.misc import CountingStream, pickle
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.translate import _
|
||||
from openerp import SUPERUSER_ID
|
||||
|
|
|
@ -23,7 +23,6 @@ import cStringIO
|
|||
import csv
|
||||
import logging
|
||||
import os.path
|
||||
import pickle
|
||||
import re
|
||||
|
||||
# for eval context:
|
||||
|
@ -53,7 +52,7 @@ from translate import _
|
|||
# List of etree._Element subclasses that we choose to ignore when parsing XML.
|
||||
from misc import SKIPPED_ELEMENT_TYPES
|
||||
|
||||
from misc import unquote
|
||||
from misc import pickle, unquote
|
||||
|
||||
# Import of XML records requires the unsafe eval as well,
|
||||
# almost everywhere, which is ok because it supposedly comes
|
||||
|
|
|
@ -27,6 +27,7 @@ Miscellaneous tools used by OpenERP.
|
|||
"""
|
||||
|
||||
from functools import wraps
|
||||
import cPickle
|
||||
import cProfile
|
||||
import subprocess
|
||||
import logging
|
||||
|
@ -36,6 +37,7 @@ import sys
|
|||
import threading
|
||||
import time
|
||||
import zipfile
|
||||
from cStringIO import StringIO
|
||||
from collections import defaultdict
|
||||
from datetime import datetime
|
||||
from itertools import islice, izip, groupby
|
||||
|
@ -1090,4 +1092,21 @@ def stripped_sys_argv(*strip_args):
|
|||
|
||||
return [x for i, x in enumerate(args) if not strip(args, i)]
|
||||
|
||||
class Pickle(object):
|
||||
@classmethod
|
||||
def load(cls, stream):
|
||||
unpickler = cPickle.Unpickler(stream)
|
||||
# pickle builtins: str/unicode, int/long, float, bool, tuple, list, dict, None
|
||||
unpickler.find_global = None
|
||||
return unpickler.load()
|
||||
|
||||
@classmethod
|
||||
def loads(cls, text):
|
||||
return cls.load(StringIO(text))
|
||||
|
||||
dumps = cPickle.dumps
|
||||
dump = cPickle.dump
|
||||
|
||||
pickle = Pickle
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Loading…
Reference in New Issue