From ede6e47ebdd3738af7916165fdc25391b0d96e4f Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Fri, 6 May 2022 13:20:08 +0000 Subject: [PATCH] [FIX] models.py: `fields_view_get` compatibility layer On a `sale.order`, when hitting the `View Forecast` button, a traceback occurred: ``` Traceback (most recent call last): File "/home/odoo/src/odoo/master/odoo/http.py", line 1381, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/home/odoo/src/odoo/master/odoo/service/model.py", line 136, in retrying result = func() File "/home/odoo/src/odoo/master/odoo/http.py", line 1410, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/home/odoo/src/odoo/master/odoo/http.py", line 1607, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/home/odoo/src/odoo/master/addons/website/models/ir_http.py", line 220, in _dispatch response = super()._dispatch(endpoint) File "/home/odoo/src/odoo/master/addons/utm/models/ir_http.py", line 27, in _dispatch return super()._dispatch(endpoint) File "/home/odoo/src/odoo/master/odoo/addons/base/models/ir_http.py", line 137, in _dispatch result = endpoint(**request.params) File "/home/odoo/src/odoo/master/odoo/http.py", line 541, in route_wrapper result = endpoint(self, *args, **params_ok) File "/home/odoo/src/odoo/master/addons/web/controllers/dataset.py", line 42, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/odoo/src/odoo/master/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/home/odoo/src/odoo/master/odoo/api.py", line 457, in call_kw result = _call_kw_model(method, model, args, kwargs) File "/home/odoo/src/odoo/master/odoo/api.py", line 430, in _call_kw_model result = method(recs, *args, **kwargs) File "/home/odoo/src/odoo/master/odoo/models.py", line 1808, in fields_view_get view = self.env['ir.ui.view'].sudo(result.pop('id')) File "/home/odoo/src/odoo/master/odoo/models.py", line 5381, in sudo assert isinstance(flag, bool) AssertionError ``` This follows the `load_views` refactor odoo/odoo#87522. `fields_view_get` has been deprecated. All calls to it must be replaced by calls to `get_views`. Leaving it there is an oversight: https://github.com/odoo/odoo/blob/fc26cc1789b1309e54473cccbc545145ccbaee31/addons/stock/static/src/js/report_stock_forecasted.js#L116 However, this demonstrated an issue in the compatibility layer added server-side to keep `fields_view_get`. This revisions solves the compatibility layer bug. In the next commit, the call to `fields_view_get` is replaced to a call to `get_views` Part-of: odoo/odoo#90750 --- odoo/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odoo/models.py b/odoo/models.py index 7c822036658..8ff5099bd2a 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -1805,7 +1805,7 @@ class BaseModel(metaclass=MetaModel): result['fields'] = self.fields_get(view_fields) result.pop('models', None) if 'id' in result: - view = self.env['ir.ui.view'].sudo(result.pop('id')) + view = self.env['ir.ui.view'].sudo().browse(result.pop('id')) result['name'] = view.name result['type'] = view.type result['view_id'] = view.id