When building a website with the website configurator, you get pages with a nice layout. However, the text inside is not adapted to your company, industry or even, most of the time, language. Using a LLM, we could easily get text much more relevant to customer needs. The scope of this work is static pages generated with the website configurator (homepage, about us, pricing, ...). Later, in other tasks, we also want users to be able to generate text inside the website builder. This commit implement the bare minimum to generate and replace a website content by AI generated sentences (based on the information provided by the user). Related IAP PR at https://github.com/odoo/iap-apps/pull/656 task-3248852 closes odoo/odoo#121021 Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com> Co-authored-by: qsm-odoo <qsm@odoo.com>
80 lines
3.7 KiB
Python
80 lines
3.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from unittest.mock import patch
|
|
|
|
import odoo.tests
|
|
|
|
class TestConfiguratorCommon(odoo.tests.HttpCase):
|
|
|
|
def _theme_upgrade_upstream(self):
|
|
# patch to prevent module install/upgrade during tests
|
|
pass
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
def iap_jsonrpc_mocked_configurator(*args, **kwargs):
|
|
endpoint = args[0]
|
|
params = kwargs.get('params', {})
|
|
language = params.get('lang', 'en_US')
|
|
if endpoint.endswith('/api/website/1/configurator/industries'):
|
|
if language in ('fr_FR', 'pa_GB'):
|
|
return {"industries": [
|
|
{"id": 1, "label": "abbey in fr"},
|
|
{"id": 2, "label": "aboriginal and torres strait islander organisation in fr"},
|
|
{"id": 3, "label": "aboriginal art gallery in fr"},
|
|
{"id": 4, "label": "abortion clinic in fr"},
|
|
{"id": 5, "label": "abrasives supplier in fr"},
|
|
{"id": 6, "label": "abundant life church in fr"}]}
|
|
else:
|
|
return {"industries": [
|
|
{"id": 1, "label": "abbey"},
|
|
{"id": 2, "label": "aboriginal and torres strait islander organisation"},
|
|
{"id": 3, "label": "aboriginal art gallery"},
|
|
{"id": 4, "label": "abortion clinic"},
|
|
{"id": 5, "label": "abrasives supplier"},
|
|
{"id": 6, "label": "abundant life church"}]}
|
|
elif '/api/website/2/configurator/recommended_themes' in endpoint:
|
|
return []
|
|
elif '/api/website/2/configurator/custom_resources/' in endpoint:
|
|
return {'images': {}}
|
|
elif '/api/olg/1/generate_placeholder' in endpoint:
|
|
return {"a non existing placeholder": "😠", 'Catchy Headline': 'Welcome to XXXX - Your Super test'}
|
|
|
|
iap_patch = patch('odoo.addons.iap.tools.iap_tools.iap_jsonrpc', iap_jsonrpc_mocked_configurator)
|
|
self.startPatcher(iap_patch)
|
|
|
|
patcher = patch('odoo.addons.website.models.ir_module_module.IrModuleModule._theme_upgrade_upstream', wraps=self._theme_upgrade_upstream)
|
|
self.startPatcher(patcher)
|
|
|
|
@odoo.tests.common.tagged('post_install', '-at_install')
|
|
class TestConfiguratorTranslation(TestConfiguratorCommon):
|
|
|
|
def test_01_configurator_translation(self):
|
|
parseltongue = self.env['res.lang'].create({
|
|
'name': 'Parseltongue',
|
|
'code': 'pa_GB',
|
|
'iso_code': 'pa_GB',
|
|
'url_code': 'pa_GB',
|
|
})
|
|
self.env["base.language.install"].create({
|
|
'overwrite': True,
|
|
'lang_ids': [(6, 0, [parseltongue.id])],
|
|
}).lang_install()
|
|
feature = self.env['website.configurator.feature'].search([('name', '=', 'Privacy Policy')])
|
|
feature.with_context(lang=parseltongue.code).write({'name': 'Parseltongue_privacy'})
|
|
self.env.ref('base.user_admin').write({'lang': parseltongue.code})
|
|
website_fr = self.env['website'].create({
|
|
'name': "New website",
|
|
})
|
|
self.env.ref('web_editor.snippets').update_field_translations('arch_db', {
|
|
parseltongue.code: {
|
|
'Save': 'Save_Parseltongue'
|
|
}
|
|
})
|
|
# disable configurator todo to ensure this test goes through
|
|
active_todo = self.env['ir.actions.todo'].search([('state', '=', 'open')], limit=1)
|
|
active_todo.update({'state': 'done'})
|
|
self.start_tour('/website/force/%s?path=%%2Fwebsite%%2Fconfigurator' % website_fr.id, 'configurator_translation', login='admin')
|