summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Paridans <app@odoo.com>2020-08-26 08:52:09 +0000
committerPierre Paridans <app@odoo.com>2020-08-26 08:52:09 +0000
commit5bcfe45fd917dd2fabb2fcca93bb409ec733b608 (patch)
treede2a078798e1e7e2454719b3b2124d24b0dc0552
parent9fc27e8232ae1f0d697fa1435a2902181661a24d (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>
-rw-r--r--addons/website_event_track/__manifest__.py1
-rw-r--r--addons/website_event_track/controllers/webmanifest.py7
-rw-r--r--addons/website_event_track/models/__init__.py1
-rw-r--r--addons/website_event_track/models/res_config_settings.py10
-rw-r--r--addons/website_event_track/models/website.py15
-rw-r--r--addons/website_event_track/tests/__init__.py1
-rw-r--r--addons/website_event_track/tests/test_website.py21
-rw-r--r--addons/website_event_track/views/res_config_settings_view.xml28
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>