summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-08-21 09:05:42 +0000
committerThibault Delavallée <tde@odoo.com>2020-08-24 10:16:48 +0000
commitee806a01029a10ef5802aac0a22241b3c1158100 (patch)
treec473bbbec8bf7f4edfeafb6fd90d5e8c8a588f14
parentdb4eda03849599f22277af00565aac603c747a2e (diff)
[FIX] website_event_track(_online): fix track menu computation
This commit fixes glitches when switching menus. Indeed agenda is not correctly taken into account, meaning it could get duplicated. Moreover track was constantly coming back as True event when not wanted. Behavior is: when setting website menu, force it to True, otherwise let users defined its value. Agenda is part of track menu so fix its declaration in _track and _track_online methods. Task ID-2314778 (event online fixes) PR #56340 PR odoo/enterprise#12589 X-Original-PR #56254 X-Original-Commit odoo/odoo@5821758c4db480a4c94b7a73c18216bed1c07394
-rw-r--r--addons/website_event/models/event_event.py4
-rw-r--r--addons/website_event_track/models/event_event.py14
-rw-r--r--addons/website_event_track/tests/test_website_event.py12
-rw-r--r--addons/website_event_track_exhibitor/models/event_event.py4
4 files changed, 22 insertions, 12 deletions
diff --git a/addons/website_event/models/event_event.py b/addons/website_event/models/event_event.py
index 72f8096b5a1..f897d2eaffd 100644
--- a/addons/website_event/models/event_event.py
+++ b/addons/website_event/models/event_event.py
@@ -118,7 +118,7 @@ class Event(models.Model):
for event in self:
if event.event_type_id and event.event_type_id != event._origin.event_type_id:
event.community_menu = event.event_type_id.community_menu
- elif event.website_menu and event.website_menu != event._origin.website_menu or not event.community_menu:
+ elif event.website_menu and (event.website_menu != event._origin.website_menu or not event.community_menu):
event.community_menu = True
elif not event.website_menu:
event.community_menu = False
@@ -129,7 +129,7 @@ class Event(models.Model):
for event in self:
if event.event_type_id and event.event_type_id != event._origin.event_type_id:
event.menu_register_cta = event.event_type_id.menu_register_cta
- elif event.website_menu and event.website_menu != event._origin.website_menu or not event.menu_register_cta:
+ elif event.website_menu and (event.website_menu != event._origin.website_menu or not event.menu_register_cta):
event.menu_register_cta = True
elif not event.website_menu:
event.menu_register_cta = False
diff --git a/addons/website_event_track/models/event_event.py b/addons/website_event_track/models/event_event.py
index 7d7dc086077..1b62b47a27e 100644
--- a/addons/website_event_track/models/event_event.py
+++ b/addons/website_event_track/models/event_event.py
@@ -37,17 +37,17 @@ class Event(models.Model):
for event in self:
event.sponsor_count = result.get(event.id, 0)
- @api.depends('event_type_id', 'website_menu', 'website_track_proposal')
+ @api.depends('event_type_id', 'website_menu')
def _compute_website_track(self):
""" Propagate event_type configuration (only at change); otherwise propagate
website_menu updated value. Also force True is track_proposal changes. """
for event in self:
if event.event_type_id and event.event_type_id != event._origin.event_type_id:
event.website_track = event.event_type_id.website_track
- elif event.website_menu != event._origin.website_menu or not event.website_menu or not event.website_track:
- event.website_track = event.website_menu
- elif event.website_track_proposal and not event.website_track:
+ elif event.website_menu and (event.website_menu != event._origin.website_menu or not event.website_track):
event.website_track = True
+ elif not event.website_menu:
+ event.website_track = False
@api.depends('event_type_id', 'website_track')
def _compute_website_track_proposal(self):
@@ -80,9 +80,9 @@ class Event(models.Model):
def _update_website_menus(self, menus_update_by_field=None):
super(Event, self)._update_website_menus(menus_update_by_field=menus_update_by_field)
for event in self:
- if (not menus_update_by_field) or (event in menus_update_by_field.get('website_track')):
+ if event.menu_id and (not menus_update_by_field or event in menus_update_by_field.get('website_track')):
event._update_website_menu_entry('website_track', 'track_menu_ids', '_get_track_menu_entries')
- if (not menus_update_by_field) or (event in menus_update_by_field.get('website_track_proposal')):
+ if event.menu_id and (not menus_update_by_field or event in menus_update_by_field.get('website_track_proposal')):
event._update_website_menu_entry('website_track_proposal', 'track_proposal_menu_ids', '_get_track_proposal_menu_entries')
def _get_menu_type_field_matching(self):
@@ -104,7 +104,7 @@ class Event(models.Model):
self.ensure_one()
return [
(_('Talks'), '/event/%s/track' % slug(self), False, 10, 'track'),
- (_('Agenda'), '/event/%s/agenda' % slug(self), False, 70, False)
+ (_('Agenda'), '/event/%s/agenda' % slug(self), False, 70, 'track')
]
def _get_track_proposal_menu_entries(self):
diff --git a/addons/website_event_track/tests/test_website_event.py b/addons/website_event_track/tests/test_website_event.py
index 1fedaf2d428..233018d449a 100644
--- a/addons/website_event_track/tests/test_website_event.py
+++ b/addons/website_event_track/tests/test_website_event.py
@@ -63,13 +63,23 @@ class TestEventWebsiteTrack(TestWebsiteEventCommon):
self._assert_website_menus(event, set(['Location', 'Register', 'Community']))
event.write({'website_track_proposal': True})
+ self.assertFalse(event.website_track)
+ self.assertTrue(event.website_track_proposal)
+ self._assert_website_menus(event, set(['Location', 'Register', 'Community', 'Talk Proposals']))
+
+ event.write({'website_track': True})
self.assertTrue(event.website_track)
self.assertTrue(event.website_track_proposal)
self._assert_website_menus(event, set(['Location', 'Register', 'Community', 'Talks', 'Agenda', 'Talk Proposals']))
@users('user_eventmanager')
def test_write_menu(self):
- event = self.env['event.event'].browse(self.event_0.id)
+ event = self.env['event.event'].create({
+ 'name': 'TestEvent',
+ 'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)),
+ 'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)),
+ 'website_menu': False,
+ })
self.assertFalse(event.menu_id)
event.write({
'website_menu': True,
diff --git a/addons/website_event_track_exhibitor/models/event_event.py b/addons/website_event_track_exhibitor/models/event_event.py
index 49081272586..acb75f24152 100644
--- a/addons/website_event_track_exhibitor/models/event_event.py
+++ b/addons/website_event_track_exhibitor/models/event_event.py
@@ -20,7 +20,7 @@ class EventEvent(models.Model):
for event in self:
if event.event_type_id and event.event_type_id != event._origin.event_type_id:
event.exhibitor_menu = event.event_type_id.exhibitor_menu
- elif event.website_menu and event.website_menu != event._origin.website_menu or not event.exhibitor_menu:
+ elif event.website_menu and (event.website_menu != event._origin.website_menu or not event.exhibitor_menu):
event.exhibitor_menu = True
elif not event.website_menu:
event.exhibitor_menu = False
@@ -38,7 +38,7 @@ class EventEvent(models.Model):
def _update_website_menus(self, menus_update_by_field=None):
super(EventEvent, self)._update_website_menus(menus_update_by_field=menus_update_by_field)
for event in self:
- if not menus_update_by_field or event in menus_update_by_field.get('exhibitor_menu'):
+ if event.menu_id and (not menus_update_by_field or event in menus_update_by_field.get('exhibitor_menu')):
event._update_website_menu_entry('exhibitor_menu', 'exhibitor_menu_ids', '_get_exhibitor_menu_entries')
def _get_menu_type_field_matching(self):