diff options
| author | Pierre Paridans <app@odoo.com> | 2020-08-26 08:52:09 +0000 |
|---|---|---|
| committer | Pierre Paridans <app@odoo.com> | 2020-08-26 08:52:09 +0000 |
| commit | 5bcfe45fd917dd2fabb2fcca93bb409ec733b608 (patch) | |
| tree | de2a078798e1e7e2454719b3b2124d24b0dc0552 /addons | |
| parent | 9fc27e8232ae1f0d697fa1435a2902181661a24d (diff) | |
[IMP] website_event_track: allow customization of the PWA's name
This commit adds a website-specific and customizable app name for the
Events' Progressive Web Application, configurable through the website's
settings.
Defaults to '<website_name> Events'.
closes odoo/odoo#56542
X-original-commit: 423076ddf1da0fc61d9a18dc19bbbbf900e3dad6
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/website_event_track/__manifest__.py | 1 | ||||
| -rw-r--r-- | addons/website_event_track/controllers/webmanifest.py | 7 | ||||
| -rw-r--r-- | addons/website_event_track/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website_event_track/models/res_config_settings.py | 10 | ||||
| -rw-r--r-- | addons/website_event_track/models/website.py | 15 | ||||
| -rw-r--r-- | addons/website_event_track/tests/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website_event_track/tests/test_website.py | 21 | ||||
| -rw-r--r-- | addons/website_event_track/views/res_config_settings_view.xml | 28 |
8 files changed, 80 insertions, 4 deletions
diff --git a/addons/website_event_track/__manifest__.py b/addons/website_event_track/__manifest__.py index 74618521e33..aa7a4a94d19 100644 --- a/addons/website_event_track/__manifest__.py +++ b/addons/website_event_track/__manifest__.py @@ -30,6 +30,7 @@ 'views/event_sponsor_views.xml', 'views/event_event_views.xml', 'views/event_type_views.xml', + 'views/res_config_settings_view.xml', 'views/website_visitor_views.xml', 'views/event_menus.xml', ], diff --git a/addons/website_event_track/controllers/webmanifest.py b/addons/website_event_track/controllers/webmanifest.py index 424f2a328f0..9f4967ed70d 100644 --- a/addons/website_event_track/controllers/webmanifest.py +++ b/addons/website_event_track/controllers/webmanifest.py @@ -20,12 +20,11 @@ class TrackManifest(http.Controller): Using this metadata, user agents can provide developers with means to create user experiences that are more comparable to that of a native application. """ - company = request.env.company website = request.website manifest = { - 'name': _('%s Online Events') % company.name, - 'short_name': company.name, - 'description': _('%s Online Events') % company.name, + 'name': website.events_app_name, + 'short_name': website.events_app_name, + 'description': _('%s Online Events Application') % website.company_id.name, 'scope': url_for('/event'), 'start_url': url_for('/event'), 'display': 'standalone', diff --git a/addons/website_event_track/models/__init__.py b/addons/website_event_track/models/__init__.py index a9c5599582c..e07e0223f3a 100644 --- a/addons/website_event_track/models/__init__.py +++ b/addons/website_event_track/models/__init__.py @@ -11,6 +11,7 @@ from . import event_track_tag from . import event_track_tag_category from . import event_track_visitor from . import event_type +from . import res_config_settings from . import website from . import website_event_menu from . import website_menu diff --git a/addons/website_event_track/models/res_config_settings.py b/addons/website_event_track/models/res_config_settings.py new file mode 100644 index 00000000000..8d87e90d9ff --- /dev/null +++ b/addons/website_event_track/models/res_config_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + events_app_name = fields.Char('Events App Name', related='website_id.events_app_name', readonly=False) diff --git a/addons/website_event_track/models/website.py b/addons/website_event_track/models/website.py index e00fde4b94f..dc418b1b47b 100644 --- a/addons/website_event_track/models/website.py +++ b/addons/website_event_track/models/website.py @@ -5,13 +5,28 @@ from PIL import Image from odoo import api, fields, models +from odoo.exceptions import ValidationError from odoo.tools import ImageProcess +from odoo.tools.translate import _ class Website(models.Model): _inherit = "website" app_icon = fields.Image(string='Website App Icon', compute='_compute_app_icon', store=True, readonly=True, help='This field holds the image used as mobile app icon on the website (PNG format).') + events_app_name = fields.Char(string='Events App Name', compute='_compute_events_app_name', store=True, readonly=False, help="This fields holds the Event's Progressive Web App name.") + + @api.depends('name') + def _compute_events_app_name(self): + for website in self: + if not website.events_app_name: + website.events_app_name = _('%s Events') % website.name + + @api.constrains('events_app_name') + def _check_events_app_name(self): + for website in self: + if not website.events_app_name: + raise ValidationError(_('"Events App Name" field is required.')) @api.depends('favicon') def _compute_app_icon(self): diff --git a/addons/website_event_track/tests/__init__.py b/addons/website_event_track/tests/__init__.py index aac974d7656..b4bf818095f 100644 --- a/addons/website_event_track/tests/__init__.py +++ b/addons/website_event_track/tests/__init__.py @@ -3,4 +3,5 @@ from . import common from . import test_track_internals +from . import test_website from . import test_website_event diff --git a/addons/website_event_track/tests/test_website.py b/addons/website_event_track/tests/test_website.py new file mode 100644 index 00000000000..5562673021d --- /dev/null +++ b/addons/website_event_track/tests/test_website.py @@ -0,0 +1,21 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. +# -*- coding: utf-8 -*- + +from odoo.tests import tagged +from odoo.tests.common import TransactionCase + + +@tagged('post_install','-at_install') +class TestWebsite(TransactionCase): + + def test_event_app_name(self): + website0 = self.env['website'].create({'name': 'Foo'}) + self.assertEqual(website0.events_app_name, 'Foo Events') + + website1 = self.env['website'].create({'name': 'Foo', 'events_app_name': 'Bar Events'}) + self.assertEqual(website1.events_app_name, 'Bar Events') + + website2 = self.env['website'].create({'name': 'Foo'}) + self.assertEqual(website2.events_app_name, 'Foo Events') + website2.write({'name': 'Bar'}) + self.assertEqual(website2.events_app_name, 'Foo Events') diff --git a/addons/website_event_track/views/res_config_settings_view.xml b/addons/website_event_track/views/res_config_settings_view.xml new file mode 100644 index 00000000000..ccc1293f783 --- /dev/null +++ b/addons/website_event_track/views/res_config_settings_view.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="res_config_settings_view_form" model="ir.ui.view"> + <field name="name">res.config.settings.view.form.inherit.website</field> + <field name="model">res.config.settings</field> + <field name="priority" eval="20"/> + <field name="inherit_id" ref="base.res_config_settings_view_form"/> + <field name="arch" type="xml"> + <xpath expr="//div[hasclass('settings')]//div[@id='website_settings']" position="inside"> + <div class="col-12 col-lg-6 o_setting_box" id="events_app_setting"> + <div class="o_setting_right_pane"> + <label for="events_app_name" string="Events PWA"/> + <span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/> + <div class="text-muted"> + Name of your website's Events Progressive Web Application + </div> + <div class="content-group"> + <div class="row mt16"> + <label class="col-lg-3 o_light_label" string="Name" for="events_app_name"/> + <field name="events_app_name" attrs="{'required': [('website_id', '!=', False)]}"/> + </div> + </div> + </div> + </div> + </xpath> + </field> + </record> +</odoo> |
