diff options
| author | Julien Castiaux <juc@odoo.com> | 2020-02-19 13:34:27 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-04-08 08:41:17 +0000 |
| commit | ab4000fb3cf8fa54ba714ceceec391b78d73755e (patch) | |
| tree | b28702ae04a1ce3628f9c6a3ffbd4a9c95324d4d /odoo/addons | |
| parent | 640e63e371a511c0d6786154408c6f5704077947 (diff) | |
[REF] base: Remove deprecated exceptions and osv
TL;DR: remember `osv` and `except_orm` ? You can forget about them.
* Deprecated `except_orm` dropped.
* `UserError` elevated as super type of all user-related
errors.
* Unused `DeferredException` dropped.
* Unused `QWebException` dropped (real one is in `qweb.py`).
* `MailDeliveryException` made a python exception.
* `name` legacy exception attribute made an alias of the python standard
`args[0]` attribute and deprecated.
* `value` legacy exception attribute dropped.
* `exception_type` RPC error response key dropped.
* Deprecated `osv` module dropped.
* `--osv-memory-age-limit` cli option made an alias of
`--transient-age-limit` and deprecated.
The `odoo.exceptions.Warning` have long been a deprecated alias to
`UserError`. It is going to be removed in a future version but first we
explicitly deprecate it with a warning.
The `odoo.exceptions.DeferredException` was a very old internal
exception, it has been removed without deprecation notice as it is never
raised.
The `odoo.exceptions.except_orm` has been a deprecated exception type
with deprecation warning for 5 years, it has been removed in favor of
UserError which becomes the super class of all user-related errors.
The `odoo.base.models.ir_mail_server.MailDeliveryException` was
inheriting `except_orm`. As it is not related to a user error but is
more of a problem an admin much take care of, the exception has been
made a Python error.
The `exception_type` JSON key in RPC error responses was holding an
hardcoded value derived from the exception type. Its usage has been
dropped in favor of the `name` JSON key that holds the precise exception
name. Again as it was hardly used in the source code (beside the crash
manager) it has been dropped without deprecation warning.
Since we are here trying to clean odoo custom exceptions, we are also
deprecating the `name` exception attribute in favor of the more standard
`args[0]` attribute.
The `name` (along with `value`) were two attributes used to raise
`except_orm` exceptions before the introduction of `UserError`,
`AccessError` and related exceptions. The `name` attribute, at the time,
was holding the exception type/title. Nowadays it contains the error
message. The `value` attribute, at the time, was holding the error
message. Nowadays it is no more used.
The `osv` module contains very old deprecated aliases. There is no
simple way to log a deprecation warning for osv, osv_memory and
osv_abstract but as they have not been in use for ages, they have been
removed too. To be consistent, the `--osv-memory-age-limit` cli option
has been made a deprecated alias to the `--transient-age-limit`.
closes odoo/odoo#45723
Task: 2187728
Related: odoo/enterprise#9162
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/addons')
| -rw-r--r-- | odoo/addons/base/models/ir_actions.py | 1 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_mail_server.py | 7 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_ir_filters.py | 4 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_res_config.py | 2 | ||||
| -rw-r--r-- | odoo/addons/test_exceptions/models.py | 21 | ||||
| -rw-r--r-- | odoo/addons/test_exceptions/view.xml | 24 | ||||
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_new_fields.py | 2 |
7 files changed, 8 insertions, 53 deletions
diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py index a3c7c4857ca..5d207e80591 100644 --- a/odoo/addons/base/models/ir_actions.py +++ b/odoo/addons/base/models/ir_actions.py @@ -508,6 +508,7 @@ class IrActionsServer(models.Model): 'model': model, # Exceptions 'Warning': odoo.exceptions.Warning, + 'UserError': odoo.exceptions.UserError, # record 'record': record, 'records': records, diff --git a/odoo/addons/base/models/ir_mail_server.py b/odoo/addons/base/models/ir_mail_server.py index 8c5399236c7..8d0bf2a21f1 100644 --- a/odoo/addons/base/models/ir_mail_server.py +++ b/odoo/addons/base/models/ir_mail_server.py @@ -15,7 +15,7 @@ import threading import html2text from odoo import api, fields, models, tools, _ -from odoo.exceptions import except_orm, UserError +from odoo.exceptions import UserError from odoo.tools import ustr, pycompat _logger = logging.getLogger(__name__) @@ -24,10 +24,9 @@ _test_logger = logging.getLogger('odoo.tests') SMTP_TIMEOUT = 60 -class MailDeliveryException(except_orm): +class MailDeliveryException(Exception): """Specific exception subclass for mail delivery errors""" - def __init__(self, name, value): - super(MailDeliveryException, self).__init__(name, value) + # Python 3: patch SMTP's internal printer/debugger def _print_debug(self, *args): diff --git a/odoo/addons/base/tests/test_ir_filters.py b/odoo/addons/base/tests/test_ir_filters.py index cb4b39ff8e2..59c4a39c608 100644 --- a/odoo/addons/base/tests/test_ir_filters.py +++ b/odoo/addons/base/tests/test_ir_filters.py @@ -222,7 +222,7 @@ class TestGlobalDefaults(FiltersCase): ) Filters = self.env['ir.filters'].with_user(self.USER_ID) - with self.assertRaises(exceptions.Warning): + with self.assertRaises(exceptions.UserError): Filters.create_or_replace({ 'name': 'c', 'model_id': 'ir.filters', @@ -242,7 +242,7 @@ class TestGlobalDefaults(FiltersCase): ) Filters = self.env['ir.filters'].with_user(self.USER_ID) - with self.assertRaises(exceptions.Warning): + with self.assertRaises(exceptions.UserError): Filters.create_or_replace({ 'name': 'a', 'model_id': 'ir.filters', diff --git a/odoo/addons/base/tests/test_res_config.py b/odoo/addons/base/tests/test_res_config.py index 70d1aed99b8..552d8759715 100644 --- a/odoo/addons/base/tests/test_res_config.py +++ b/odoo/addons/base/tests/test_res_config.py @@ -78,7 +78,7 @@ class TestResConfig(TransactionCase): res = self.ResConfig.get_config_warning(self.error_msg_wo_menu) # Check type - self.assertIsInstance(res, exceptions.Warning) + self.assertIsInstance(res, exceptions.UserError) # Check returned value self.assertEqual(res.args[0], self.expected_final_error_msg_wo_menu) diff --git a/odoo/addons/test_exceptions/models.py b/odoo/addons/test_exceptions/models.py index 7028ddda128..cb218aaac32 100644 --- a/odoo/addons/test_exceptions/models.py +++ b/odoo/addons/test_exceptions/models.py @@ -2,7 +2,6 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import odoo.exceptions -import odoo.osv.osv from odoo import models, api from odoo.tools.safe_eval import safe_eval @@ -14,17 +13,6 @@ class m(models.Model): _name = 'test.exceptions.model' _description = 'Test Exception Model' - def generate_except_osv(self): - # title is ignored in the new (6.1) exceptions - raise odoo.osv.osv.except_osv('title', 'description') - - def generate_except_orm(self): - # title is ignored in the new (6.1) exceptions - raise odoo.exceptions.except_orm('title', 'description') - - def generate_warning(self): - raise odoo.exceptions.Warning('description') - def generate_redirect_warning(self): action = self.env.ref('test_exceptions.action_test_exceptions') raise odoo.exceptions.RedirectWarning('description', action.id, 'Go to the redirection') @@ -50,15 +38,6 @@ class m(models.Model): def generate_validation_error(self): raise odoo.exceptions.ValidationError('description') - def generate_except_osv_safe_eval(self): - self.generate_safe_eval(self.generate_except_osv) - - def generate_except_orm_safe_eval(self): - self.generate_safe_eval(self.generate_except_orm) - - def generate_warning_safe_eval(self): - self.generate_safe_eval(self.generate_warning) - def generate_redirect_warning_safe_eval(self): self.generate_safe_eval(self.generate_redirect_warning) diff --git a/odoo/addons/test_exceptions/view.xml b/odoo/addons/test_exceptions/view.xml index 0e8f96a7c91..30f19e19b58 100644 --- a/odoo/addons/test_exceptions/view.xml +++ b/odoo/addons/test_exceptions/view.xml @@ -11,18 +11,6 @@ <separator/> <group> <div> - <button name="generate_except_osv" string="except_osv" type="object" icon="fa-refresh text-primary" /> - <label for="generate_except_osv" string="Warning-description"/> - </div> - <div> - <button name="generate_except_orm" string="except_orm" type="object" icon="fa-refresh text-primary"/> - <label for="generate_except_orm" string="Warning-description"/> - </div> - <div> - <button name="generate_warning" string="Warning" type="object" icon="fa-refresh text-primary"/> - <label for="generate_warning" string="Warning-description"/> - </div> - <div> <button name="generate_redirect_warning" string="RedirectWarning" type="object" icon="fa-refresh text-primary"/> <label for="generate_redirect_warning" string="Warning-description-redirection button"/> </div> @@ -56,18 +44,6 @@ </div> <div> - <button name="generate_except_osv_safe_eval" string="except_osv*" type="object" icon="fa-refresh text-primary"/> - <label for="generate_except_osv_safe_eval" string="Warning-description"/> - </div> - <div> - <button name="generate_except_orm_safe_eval" string="except_orm*" type="object" icon="fa-refresh text-primary"/> - <label for="generate_except_orm_safe_eval" string="Warning-description"/> - </div> - <div> - <button name="generate_warning_safe_eval" string="Warning*" type="object" icon="fa-refresh text-primary"/> - <label for="generate_warning_safe_eval" string="Warning-description"/> - </div> - <div> <button name="generate_redirect_warning_safe_eval" string="RedirectWarning*" type="object" icon="fa-refresh text-primary"/> <label for="generate_redirect_warning_safe_eval" string="Warning-description-redirection button" class="oe_inline"/> </div> diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py index 97d1cb2dacc..9f895ba5732 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -1539,7 +1539,7 @@ class TestFields(TransactionCaseWithUserDemo): 'name': 'Test without attachment', 'image_wo_attachment': SVG.decode("utf-8"), }) - self.assertEqual(e.exception.name, 'Only admins can upload SVG files.') + self.assertEqual(e.exception.args[0], 'Only admins can upload SVG files.') def test_90_binary_svg(self): from odoo.addons.base.tests.test_mimetypes import SVG |
