diff options
| author | Martin Trigaux <mat@odoo.com> | 2020-01-22 15:16:22 +0000 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2020-01-28 13:58:05 +0000 |
| commit | a74a6480302620be364d2d15717fce59db3ddf4e (patch) | |
| tree | ea350f32d91ceb078c4de5efd754bc15c08b450b /addons/mail | |
| parent | 41a465bc869a96b7a4e2b49a691360827019b0ea (diff) | |
[IMP] *: use ast.literal_eval
When simply need to parse a domain, it is easier
Add .strip() on ir.ui.view as ast.literal_eval produces an syntax
error if the node starts with spaces (as done in the xpath of
hr_attendance.view_employee_form_inherit_hr_attendance)
closes odoo/odoo#43831
Related: odoo/enterprise#7894
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Diffstat (limited to 'addons/mail')
| -rw-r--r-- | addons/mail/models/mail_alias.py | 4 | ||||
| -rw-r--r-- | addons/mail/models/mail_mail.py | 4 | ||||
| -rw-r--r-- | addons/mail/models/mail_thread.py | 6 | ||||
| -rw-r--r-- | addons/mail/wizard/mail_compose_message.py | 4 |
4 files changed, 9 insertions, 9 deletions
diff --git a/addons/mail/models/mail_alias.py b/addons/mail/models/mail_alias.py index 4cc8234ba23..839123896c8 100644 --- a/addons/mail/models/mail_alias.py +++ b/addons/mail/models/mail_alias.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import ast import logging import re from odoo import _, api, fields, models from odoo.exceptions import ValidationError from odoo.tools import remove_accents -from odoo.tools.safe_eval import safe_eval _logger = logging.getLogger(__name__) @@ -82,7 +82,7 @@ class Alias(models.Model): def _check_alias_defaults(self): for alias in self: try: - dict(safe_eval(alias.alias_defaults)) + dict(ast.literal_eval(alias.alias_defaults)) except Exception: raise ValidationError(_('Invalid expression, it must be a literal python dictionary definition e.g. "{\'field\': \'value\'}"')) diff --git a/addons/mail/models/mail_mail.py b/addons/mail/models/mail_mail.py index d554ff8edab..a94d70a7c26 100644 --- a/addons/mail/models/mail_mail.py +++ b/addons/mail/models/mail_mail.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import ast import base64 import datetime import logging @@ -14,7 +15,6 @@ from collections import defaultdict from odoo import _, api, fields, models from odoo import tools from odoo.addons.base.models.ir_mail_server import MailDeliveryException -from odoo.tools.safe_eval import safe_eval _logger = logging.getLogger(__name__) @@ -319,7 +319,7 @@ class MailMail(models.Model): headers['Return-Path'] = '%s+%d@%s' % (bounce_alias, mail.id, catchall_domain) if mail.headers: try: - headers.update(safe_eval(mail.headers)) + headers.update(ast.literal_eval(mail.headers)) except Exception: pass diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index ed0e9145344..2e94ea0cf44 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import ast import base64 import datetime import dateutil @@ -31,7 +32,6 @@ from odoo.osv import expression from odoo.tools import pycompat, ustr from odoo.tools.misc import clean_context, split_every -from odoo.tools.safe_eval import safe_eval _logger = logging.getLogger(__name__) @@ -416,7 +416,7 @@ class MailThread(models.AbstractModel): doc = etree.XML(res['arch']) for node in doc.xpath("//field[@name='message_ids']"): # the 'Log a note' button is employee only - options = safe_eval(node.get('options', '{}')) + options = ast.literal_eval(node.get('options', '{}')) is_employee = self.env.user.has_group('base.group_user') options['display_log_button'] = is_employee # save options on the node @@ -1001,7 +1001,7 @@ class MailThread(models.AbstractModel): routes = [] for alias in dest_aliases: user_id = self._mail_find_user_for_gateway(email_from, alias=alias).id or self._uid - route = (alias.alias_model_id.model, alias.alias_force_thread_id, safe_eval(alias.alias_defaults), user_id, alias) + route = (alias.alias_model_id.model, alias.alias_force_thread_id, ast.literal_eval(alias.alias_defaults), user_id, alias) route = self._routing_check_route(message, message_dict, route, raise_exception=True) if route: _logger.info( diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index fe4660e451b..520b8f94339 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import ast import base64 import re from odoo import _, api, fields, models, tools -from odoo.tools.safe_eval import safe_eval from odoo.exceptions import UserError @@ -215,7 +215,7 @@ class MailComposer(models.TransientModel): ActiveModel = ActiveModel.with_context(mail_notify_force_send=False, mail_create_nosubscribe=True) # wizard works in batch mode: [res_id] or active_ids or active_domain if mass_mode and wizard.use_active_domain and wizard.model: - res_ids = self.env[wizard.model].search(safe_eval(wizard.active_domain)).ids + res_ids = self.env[wizard.model].search(ast.literal_eval(wizard.active_domain)).ids elif mass_mode and wizard.model and self._context.get('active_ids'): res_ids = self._context['active_ids'] else: |
