*: website_forum, website_hr_recruitment, website_sale Before this commit, most of the backend redirections to the WebsitePreview, introduced in [1], were using ir.actions.url with the get_client_action_url util, which was not optimal. This commit changes that to use a new get_client_action method, which returns the ir.actions.client record. It will execute the action directly, avoid to redirect the router before, and improve performances. Also, it allows to solve bugs, as: - The back navigation from the WebsitePreview to the ListViews. Going through the /web controller would add an entry in the history, and going back on it would reload the client action. [1]: https://github.com/odoo/odoo/commit/31cc10b91dc7762e23b4bde9b945be0c4ce3fe3b task-2687506 closes odoo/odoo#102991 X-original-commit: 30fb11e479fb7b3db3649e55fcbdb06bfcdb398c Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
# -*- encoding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class BaseLanguageInstall(models.TransientModel):
|
|
|
|
_inherit = "base.language.install"
|
|
|
|
website_ids = fields.Many2many('website', string='Websites to translate')
|
|
|
|
@api.model
|
|
def default_get(self, fields):
|
|
defaults = super(BaseLanguageInstall, self).default_get(fields)
|
|
website_id = self._context.get('params', {}).get('website_id')
|
|
if website_id:
|
|
if 'website_ids' not in defaults:
|
|
defaults['website_ids'] = []
|
|
defaults['website_ids'].append(website_id)
|
|
return defaults
|
|
|
|
def lang_install(self):
|
|
action = super(BaseLanguageInstall, self).lang_install()
|
|
if self.website_ids and self.lang_ids:
|
|
self.website_ids.language_ids |= self.lang_ids
|
|
params = self._context.get('params', {})
|
|
if 'url_return' in params:
|
|
url = params['url_return'].replace('[lang]', self.first_lang_id.code)
|
|
return self.env['website'].get_client_action(url)
|
|
return action
|