[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/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
import pickle
|
|
||||||
|
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields
|
||||||
from openerp.osv.orm import except_orm
|
from openerp.osv.orm import except_orm
|
||||||
from openerp.tools.safe_eval import safe_eval as eval
|
from openerp.tools.safe_eval import safe_eval as eval
|
||||||
|
from openerp.tools import pickle
|
||||||
|
|
||||||
EXCLUDED_FIELDS = set((
|
EXCLUDED_FIELDS = set((
|
||||||
'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml',
|
'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml',
|
||||||
|
|
|
@ -49,7 +49,6 @@ import datetime
|
||||||
import itertools
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
import operator
|
import operator
|
||||||
import pickle
|
|
||||||
import re
|
import re
|
||||||
import simplejson
|
import simplejson
|
||||||
import time
|
import time
|
||||||
|
@ -65,7 +64,7 @@ import openerp
|
||||||
import openerp.netsvc as netsvc
|
import openerp.netsvc as netsvc
|
||||||
import openerp.tools as tools
|
import openerp.tools as tools
|
||||||
from openerp.tools.config import config
|
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.safe_eval import safe_eval as eval
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp import SUPERUSER_ID
|
from openerp import SUPERUSER_ID
|
||||||
|
|
|
@ -23,7 +23,6 @@ import cStringIO
|
||||||
import csv
|
import csv
|
||||||
import logging
|
import logging
|
||||||
import os.path
|
import os.path
|
||||||
import pickle
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
# for eval context:
|
# for eval context:
|
||||||
|
@ -53,7 +52,7 @@ from translate import _
|
||||||
# List of etree._Element subclasses that we choose to ignore when parsing XML.
|
# List of etree._Element subclasses that we choose to ignore when parsing XML.
|
||||||
from misc import SKIPPED_ELEMENT_TYPES
|
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,
|
# Import of XML records requires the unsafe eval as well,
|
||||||
# almost everywhere, which is ok because it supposedly comes
|
# almost everywhere, which is ok because it supposedly comes
|
||||||
|
|
|
@ -27,6 +27,7 @@ Miscellaneous tools used by OpenERP.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
import cPickle
|
||||||
import cProfile
|
import cProfile
|
||||||
import subprocess
|
import subprocess
|
||||||
import logging
|
import logging
|
||||||
|
@ -36,6 +37,7 @@ import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import zipfile
|
import zipfile
|
||||||
|
from cStringIO import StringIO
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from itertools import islice, izip, groupby
|
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)]
|
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:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
Loading…
Reference in New Issue