diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 8bc5c386527..a6d192240a2 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -60,7 +60,8 @@ import openerp import openerp.netsvc as netsvc import openerp.tools as tools from openerp.tools.config import config -from openerp.tools.safe_eval import const_eval, safe_eval as eval +from openerp.tools.safe_eval import safe_eval as eval +from ast import literal_eval from openerp.tools.translate import _ from openerp import SUPERUSER_ID from query import Query @@ -1734,7 +1735,7 @@ class BaseModel(object): transfer_field_to_modifiers(field, modifiers) if node.get('options'): try: - node.set('options', simplejson.dumps(const_eval(node.get('options')))) + node.set('options', simplejson.dumps(literal_eval(node.get('options')))) except Exception, msg: raise except_orm('Invalide Python code in %s'%(node.get('options')), msg[0]) diff --git a/openerp/tools/safe_eval.py b/openerp/tools/safe_eval.py index 6bc92e57465..601fd95200a 100644 --- a/openerp/tools/safe_eval.py +++ b/openerp/tools/safe_eval.py @@ -46,7 +46,7 @@ _ALLOWED_MODULES = ['_strptime', 'time'] _CONST_OPCODES = set(opmap[x] for x in [ 'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'ROT_FOUR', 'DUP_TOP', 'DUP_TOPX', 'POP_BLOCK','SETUP_LOOP', 'BUILD_LIST', 'BUILD_MAP', 'BUILD_TUPLE', - 'LOAD_CONST', 'RETURN_VALUE', 'STORE_SUBSCR', 'STORE_MAP', 'LOAD_NAME'] if x in opmap) + 'LOAD_CONST', 'RETURN_VALUE', 'STORE_SUBSCR'] if x in opmap) _EXPR_OPCODES = _CONST_OPCODES.union(set(opmap[x] for x in [ 'UNARY_POSITIVE', 'UNARY_NEGATIVE', 'UNARY_NOT',