[FIX] account, mail, etc.: uniformize evaluated expressions

opw-626694
This commit is contained in:
Olivier Dony 2015-05-20 13:42:14 +02:00
parent eaaca65594
commit 53980b7c52
13 changed files with 19 additions and 6 deletions

View File

@ -31,6 +31,7 @@ from openerp import pooler, tools
from openerp.osv import fields, osv, expression from openerp.osv import fields, osv, expression
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.float_utils import float_round as round from openerp.tools.float_utils import float_round as round
from openerp.tools.safe_eval import safe_eval as eval
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp
@ -2033,7 +2034,7 @@ class account_tax(osv.osv):
for tax in taxes: for tax in taxes:
if tax.applicable_type=='code': if tax.applicable_type=='code':
localdict = {'price_unit':price_unit, 'product':product, 'partner':partner} localdict = {'price_unit':price_unit, 'product':product, 'partner':partner}
exec tax.python_applicable in localdict eval(tax.python_applicable, localdict, mode="exec", nocopy=True)
if localdict.get('result', False): if localdict.get('result', False):
res.append(tax) res.append(tax)
else: else:
@ -2074,7 +2075,7 @@ class account_tax(osv.osv):
# data['amount'] = quantity # data['amount'] = quantity
elif tax.type=='code': elif tax.type=='code':
localdict = {'price_unit':cur_price_unit, 'product':product, 'partner':partner} localdict = {'price_unit':cur_price_unit, 'product':product, 'partner':partner}
exec tax.python_compute in localdict eval(tax.python_compute, localdict, mode="exec", nocopy=True)
amount = localdict['result'] amount = localdict['result']
data['amount'] = amount data['amount'] = amount
elif tax.type=='balance': elif tax.type=='balance':
@ -2210,7 +2211,7 @@ class account_tax(osv.osv):
elif tax.type=='code': elif tax.type=='code':
localdict = {'price_unit':cur_price_unit, 'product':product, 'partner':partner} localdict = {'price_unit':cur_price_unit, 'product':product, 'partner':partner}
exec tax.python_compute_inv in localdict eval(tax.python_compute_inv, localdict, mode="exec", nocopy=True)
amount = localdict['result'] amount = localdict['result']
elif tax.type=='balance': elif tax.type=='balance':
amount = cur_price_unit - reduce(lambda x,y: y.get('amount',0.0)+x, res, 0.0) amount = cur_price_unit - reduce(lambda x,y: y.get('amount',0.0)+x, res, 0.0)

View File

@ -24,6 +24,7 @@ import time
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp import netsvc from openerp import netsvc
from openerp.tools.safe_eval import safe_eval as eval
class account_invoice_refund(osv.osv_memory): class account_invoice_refund(osv.osv_memory):

View File

@ -24,6 +24,8 @@ import datetime
import time import time
from report import report_sxw from report import report_sxw
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval as eval
# #
# Use period and Journal for selection or resources # Use period and Journal for selection or resources
# #
@ -64,7 +66,7 @@ class report_assert_account(report_sxw.rml_parse):
'result': None, #used to store the result of the test 'result': None, #used to store the result of the test
'column_order': None, #used to choose the display order of columns (in case you are returning a list of dict) 'column_order': None, #used to choose the display order of columns (in case you are returning a list of dict)
} }
exec code_exec in localdict eval(code_exec, localdict, mode="exec", nocopy=True)
result = localdict['result'] result = localdict['result']
column_order = localdict.get('column_order', None) column_order = localdict.get('column_order', None)

View File

@ -31,6 +31,7 @@ import random
import datetime import datetime
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval as eval
from itertools import groupby from itertools import groupby
from operator import itemgetter from operator import itemgetter

View File

@ -27,6 +27,7 @@ import openerp
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)

View File

@ -23,6 +23,7 @@ import time
from openerp.osv import fields,osv from openerp.osv import fields,osv
from openerp.tools.translate import _ from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp
from openerp.tools.safe_eval import safe_eval as eval
class delivery_carrier(osv.osv): class delivery_carrier(osv.osv):
_name = "delivery.carrier" _name = "delivery.carrier"

View File

@ -29,6 +29,7 @@
import time import time
from openerp.report import report_sxw from openerp.report import report_sxw
from openerp.tools.safe_eval import safe_eval as eval
class base_report(report_sxw.rml_parse): class base_report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context=None): def __init__(self, cr, uid, name, context=None):

View File

@ -27,6 +27,7 @@ from openerp.osv import fields, osv
from openerp.tools import ustr from openerp.tools import ustr
from openerp.modules.registry import RegistryManager from openerp.modules.registry import RegistryManager
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp.tools.safe_eval import safe_eval as eval
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)

View File

@ -22,6 +22,7 @@
from openerp import pooler from openerp import pooler
from openerp import tools from openerp import tools
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp.tools.safe_eval import safe_eval as eval
class Env(dict): class Env(dict):

View File

@ -33,6 +33,7 @@ import openerp.addons.decimal_precision as dp
from openerp.osv.orm import browse_record, browse_null from openerp.osv.orm import browse_record, browse_null
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP
from openerp.tools.float_utils import float_compare from openerp.tools.float_utils import float_compare
from openerp.tools.safe_eval import safe_eval as eval
class purchase_order(osv.osv): class purchase_order(osv.osv):

View File

@ -615,8 +615,8 @@ class share_wizard(osv.TransientModel):
# other groups, so we duplicate if needed # other groups, so we duplicate if needed
rule = self._check_personal_rule_or_duplicate(cr, group_id, rule, context=context) rule = self._check_personal_rule_or_duplicate(cr, group_id, rule, context=context)
eval_ctx = rule_obj._eval_context_for_combinations() eval_ctx = rule_obj._eval_context_for_combinations()
org_domain = expression.normalize_domain(eval(rule.domain_force, eval_ctx)) org_domain = expression.normalize_domain(safe_eval(rule.domain_force, eval_ctx))
new_clause = expression.normalize_domain(eval(domain, eval_ctx)) new_clause = expression.normalize_domain(safe_eval(domain, eval_ctx))
combined_domain = expression.AND([new_clause, org_domain]) combined_domain = expression.AND([new_clause, org_domain])
rule.write({'domain_force': combined_domain, 'name': rule.name + _('(Modified)')}) rule.write({'domain_force': combined_domain, 'name': rule.name + _('(Modified)')})
_logger.debug("Combining sharing rule %s on model %s with domain: %s", rule.id, model_id, domain) _logger.debug("Combining sharing rule %s on model %s with domain: %s", rule.id, model_id, domain)

View File

@ -1,4 +1,5 @@
import openerp import openerp
from openerp.tools.safe_eval import safe_eval as eval
class DiagramView(openerp.addons.web.http.Controller): class DiagramView(openerp.addons.web.http.Controller):
_cp_path = "/web_diagram/diagram" _cp_path = "/web_diagram/diagram"

View File

@ -36,6 +36,7 @@ import common
from openerp.osv.fields import float as float_field, function as function_field, datetime as datetime_field from openerp.osv.fields import float as float_field, function as function_field, datetime as datetime_field
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.safe_eval import safe_eval as eval
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)