diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-06-14 15:20:01 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-06-14 15:20:01 +0200 |
| commit | 34a8754d4f0a6dca7cf612859d5702bcae1f90d6 (patch) | |
| tree | 757fd2bd012ff92968ea0cc0f27523fd0a1587cf /addons/website | |
| parent | 856685d6408857678ca9fc25b09dfea468800f93 (diff) | |
| parent | 498b4b4350d5fdeab0fb58275ad3b8e4dd443190 (diff) | |
[MERGE] forward port branch saas-12.2 up to 498b4b4350d
Diffstat (limited to 'addons/website')
| -rw-r--r-- | addons/website/controllers/main.py | 7 | ||||
| -rw-r--r-- | addons/website/data/website_data.xml | 65 | ||||
| -rw-r--r-- | addons/website/models/ir_ui_view.py | 3 | ||||
| -rw-r--r-- | addons/website/models/website.py | 2 | ||||
| -rw-r--r-- | addons/website/tests/test_views.py | 48 |
5 files changed, 89 insertions, 36 deletions
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index d322366f359..5e7e39f9dfc 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -99,7 +99,7 @@ class Website(Home): if request.env['res.users'].browse(request.uid).has_group('base.group_user'): redirect = b'/web?' + request.httprequest.query_string else: - redirect = '/' + redirect = '/my' return http.redirect_with_hash(redirect) return response @@ -467,3 +467,8 @@ class WebsiteBinary(http.Controller): if unique: kw['unique'] = unique return Binary().content_image(**kw) + + @http.route(['/favicon.ico'], type='http', auth='public', website=True) + def favicon(self, **kw): + # when opening a pdf in chrome, chrome tries to open the default favicon url + return self.content_image(model='website', id=str(request.website.id), field='favicon', **kw) diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml index 9701610dde3..37cd73125e4 100644 --- a/addons/website/data/website_data.xml +++ b/addons/website/data/website_data.xml @@ -1,27 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <data noupdate="1"> - <!-- Default Menu to store module menus for new website --> - <record id="main_menu" model="website.menu"> - <field name="name">Default Main Menu</field> - <field name="url">/default-main-menu</field> - </record> - <record id="menu_home" model="website.menu"> - <field name="name">Home</field> - <field name="url">/</field> - <field name="parent_id" ref="website.main_menu"/> - <field name="sequence" type="int">10</field> - </record> - <record id="menu_contactus" model="website.menu"> - <field name="name">Contact us</field> - <field name="url">/contactus</field> - <field name="parent_id" ref="website.main_menu"/> - <field name="sequence" type="int">60</field> - </record> - + <data> <!-- split between ir_ui_view & website_page record to keep external_id on ir_ui_view --> - - <!-- Homepage --> <record id="homepage" model="ir.ui.view"> <field name="name">Home</field> <field name="type">qweb</field> @@ -35,13 +15,7 @@ </t> </field> </record> - <record id="homepage_page" model="website.page"> - <field name="website_published">True</field> - <field name="url">/</field> - <field name="view_id" ref="homepage"/> - </record> - <!-- Contact Us page --> <record id="contactus" model="ir.ui.view"> <field name="name">Contact Us</field> <field name="type">qweb</field> @@ -93,13 +67,7 @@ </t> </field> </record> - <record id="contactus_page" model="website.page"> - <field name="url">/contactus</field> - <field name="website_published">True</field> - <field name="view_id" ref="contactus"/> - </record> - <!-- About Us page --> <record id="aboutus" model="ir.ui.view"> <field name="name">About us</field> <field name="type">qweb</field> @@ -145,12 +113,43 @@ </t> </field> </record> + </data> + + <data noupdate="1"> + <record id="homepage_page" model="website.page"> + <field name="website_published">True</field> + <field name="url">/</field> + <field name="view_id" ref="homepage"/> + </record> + <record id="contactus_page" model="website.page"> + <field name="url">/contactus</field> + <field name="website_published">True</field> + <field name="view_id" ref="contactus"/> + </record> <record id="aboutus_page" model="website.page"> <field name="website_published">True</field> <field name="url">/aboutus</field> <field name="view_id" ref="aboutus"/> </record> + <!-- Default Menu to store module menus for new website --> + <record id="main_menu" model="website.menu"> + <field name="name">Default Main Menu</field> + <field name="url">/default-main-menu</field> + </record> + <record id="menu_home" model="website.menu"> + <field name="name">Home</field> + <field name="url">/</field> + <field name="parent_id" ref="website.main_menu"/> + <field name="sequence" type="int">10</field> + </record> + <record id="menu_contactus" model="website.menu"> + <field name="name">Contact us</field> + <field name="url">/contactus</field> + <field name="parent_id" ref="website.main_menu"/> + <field name="sequence" type="int">60</field> + </record> + <record id="default_website" model="website"> <field name="name">My Website</field> <field name="domain"></field> diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index a396b676940..946ed9fe7f8 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -82,7 +82,8 @@ class View(models.Model): # original tree. Indeed, the order of children 'id' fields # must remain the same so that the inheritance is applied # in the same order in the copied tree. - inherit_child.copy({'inherit_id': website_specific_view.id, 'key': inherit_child.key}) + child = inherit_child.copy({'inherit_id': website_specific_view.id, 'key': inherit_child.key}) + inherit_child.inherit_children_ids.write({'inherit_id': child.id}) inherit_child.unlink() else: # Trigger COW on inheriting views diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 0c63ee55f41..82e4f36107f 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -141,7 +141,7 @@ class Website(models.Model): public_user_to_change_websites = self.env['website'] self._get_languages.clear_cache(self) if 'company_id' in values and 'user_id' not in values: - public_user_to_change_websites = self.filtered(lambda w: w.user_id.company_id.id != values['company_id']) + public_user_to_change_websites = self.filtered(lambda w: w.sudo().user_id.company_id.id != values['company_id']) if public_user_to_change_websites: company = self.env['res.company'].browse(values['company_id']) super(Website, public_user_to_change_websites).write(dict(values, user_id=company._get_public_user().id)) diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index bb847ba9f6a..0d24a2517ad 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -797,6 +797,54 @@ class TestCowViewSaving(common.TransactionCase): all_title_updated = specific_view.website_meta_title == self.base_view.website_meta_title == "A bug got fixed by updating this field" self.assertEqual(all_title_updated, True, "Update on top level generic views should also be applied on specific views") + def test_multiple_inherit_level(self): + """ Test multi-level inheritance: + Base + | + ---> Extension (Website-specific) + | + ---> Extension 2 (Website-specific) + """ + View = self.env['ir.ui.view'] + + self.inherit_view.website_id = 1 + inherit_view_2 = View.create({ + 'name': 'Extension 2', + 'mode': 'extension', + 'inherit_id': self.inherit_view.id, + 'arch': '<div position="inside">, extended content 2</div>', + 'key': 'website.extension_view_2', + 'website_id': 1, + }) + + total_views = View.search_count([]) + + # id | name | content | website_id | inherit | key + # -------------------------------------------------------------------------------------------- + # 1 | Base | base content | / | / | website.base_view + # 2 | Extension | , extended content | 1 | 1 | website.extension_view + # 3 | Extension 2 | , extended content 2 | 1 | 2 | website.extension_view_2 + + self.base_view.with_context(website_id=1).write({'arch': '<div>modified content</div>'}) + + # 2 views are created, one is deleted + self.assertEqual(View.search_count([]), total_views + 1) + self.assertFalse(self.inherit_view.exists()) + self.assertTrue(inherit_view_2.exists()) + + # Verify the inheritance + base_specific = View.search([('key', '=', self.base_view.key), ('website_id', '=', 1)]).with_context(load_all_views=True) + extend_specific = View.search([('key', '=', 'website.extension_view'), ('website_id', '=', 1)]) + self.assertEqual(extend_specific.inherit_id, base_specific) + self.assertEqual(inherit_view_2.inherit_id, extend_specific) + + # id | name | content | website_id | inherit | key + # -------------------------------------------------------------------------------------------- + # 1 | Base | base content | / | / | website.base_view + # 4 | Base | modified content | 1 | / | website.base_view + # 5 | Extension | , extended content | 1 | 4 | website.extension_view + # 3 | Extension 2 | , extended content 2 | 1 | 5 | website.extension_view_2 + class Crawler(HttpCase): def setUp(self): |
