|
10 | 10 | from lxml import etree
|
11 | 11 | from pytz import timezone
|
12 | 12 |
|
13 |
| -from odoo import _, api, fields, models |
| 13 | +from odoo import _, api, fields, models, tools |
14 | 14 | from odoo.exceptions import ValidationError
|
15 |
| -from odoo.tools import html_escape, safe_eval |
| 15 | +from odoo.tools import html_escape |
16 | 16 | from odoo.tools.float_utils import float_compare, float_is_zero, float_round
|
| 17 | +from odoo.tools.safe_eval import safe_eval |
17 | 18 |
|
18 | 19 | _logger = logging.getLogger(__name__)
|
19 | 20 |
|
@@ -175,8 +176,8 @@ def _build_form_url(self, rec):
|
175 | 176 | def _base_eval_ctx_static(self):
|
176 | 177 | # Only static, import-heavy items
|
177 | 178 | return {
|
178 |
| - "time": safe_eval.time, |
179 |
| - "datetime": safe_eval.datetime, |
| 179 | + "time": tools.safe_eval.time, |
| 180 | + "datetime": tools.safe_eval.datetime, |
180 | 181 | "dateutil": {
|
181 | 182 | "parser": dateparse,
|
182 | 183 | "relativedelta": relativedelta,
|
@@ -236,9 +237,9 @@ def _run_rule_code(self, rule, eval_ctx):
|
236 | 237 | return {}
|
237 | 238 | code = rule.message_value_code.strip()
|
238 | 239 | try:
|
239 |
| - out = safe_eval.safe_eval(code, eval_ctx, mode="eval") or {} |
| 240 | + out = safe_eval(code, eval_ctx, mode="eval") or {} |
240 | 241 | except Exception:
|
241 |
| - safe_eval.safe_eval(code, eval_ctx, mode="exec", nocopy=True) |
| 242 | + safe_eval(code, eval_ctx, mode="exec", nocopy=True) |
242 | 243 | out = eval_ctx.get("result") or {}
|
243 | 244 | return out if isinstance(out, dict) else {}
|
244 | 245 |
|
|
0 commit comments