[IMP] (website_)event: ease configuration of Online features
PURPOSE Clean organization and models linked to Event Online feature introduced in semi stable saas-13.3 at odoo/odoo@981f95b and odoo/enterprise@1472202 Also clean website event menu not being available in website event but only in website event track, which implies some extra-code to manage it. In short: merge website_event_online in website_event, website_event_track _(online/session) in website_event_track. RATIONALE _online modules have been added to extend content of website_event and website_event_track without having any impact on those module. First step of cleaning is to move this content directly in base module. track_session module is mainly a rewrite of track module. Second step of cleaning is to move its content directly in website_event_track. SPECIFICATIONS Allow to configure Menu CTA button on event from event_type, like other frontend related menus and buttons. Add settings to ease discovering and installing sub event features like * meet; * exhibitor; * live mode; * quizzes; LINKS Task ID-2319779 COM odoo/odoo#56067 ENT odoo/enterprise#12520 UPG odoo/upgrade#1654
This commit is contained in:
@@ -6,7 +6,11 @@ class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
module_event_sale = fields.Boolean("Tickets")
|
||||
module_website_event_meet = fields.Boolean("Discussion Rooms")
|
||||
module_website_event_track = fields.Boolean("Tracks and Agenda")
|
||||
module_website_event_track_live = fields.Boolean("Live Mode")
|
||||
module_website_event_track_quiz = fields.Boolean("Quiz on Tracks")
|
||||
module_website_event_track_exhibitor = fields.Boolean("Advanced Sponsors")
|
||||
module_website_event_questions = fields.Boolean("Registration Survey")
|
||||
module_event_barcode = fields.Boolean("Barcode")
|
||||
module_website_event_sale = fields.Boolean("Online Ticketing")
|
||||
|
||||
@@ -22,6 +22,44 @@
|
||||
<div class="text-muted">
|
||||
Manage & publish a schedule with tracks
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('module_website_event_track', '=', False)]}">
|
||||
<field name="module_website_event_track_live" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Live Mode" for="module_website_event_track_live"/><br/>
|
||||
<span class="text-muted">Youtube support, Chat</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3 d-flex" attrs="{'invisible': [('module_website_event_track', '=', False)]}">
|
||||
<field name="module_website_event_track_quiz" class="w-auto"/>
|
||||
<div>
|
||||
<label string="Quizzes on tracks" for="module_website_event_track_quiz"/><br/>
|
||||
<span class="text-muted">Quizzes, leaderboard</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div>
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_meet"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Discussion Rooms" for="module_website_event_meet"/>
|
||||
<div class="text-muted">
|
||||
Integrate discussion rooms
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_website_event_track_exhibitor"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Advanced Sponsors" for="module_website_event_track_exhibitor"/>
|
||||
<div class="text-muted">
|
||||
Chat, advanced exhibitors
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -123,10 +123,16 @@ class Event(models.Model):
|
||||
elif not event.website_menu:
|
||||
event.community_menu = False
|
||||
|
||||
@api.depends('website_menu')
|
||||
@api.depends("event_type_id", "website_menu")
|
||||
def _compute_menu_register_cta(self):
|
||||
""" At type onchange: synchronize. At website_menu update: synchronize. """
|
||||
for event in self:
|
||||
event.menu_register_cta = event.website_menu
|
||||
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:
|
||||
event.menu_register_cta = True
|
||||
elif not event.website_menu:
|
||||
event.menu_register_cta = False
|
||||
|
||||
@api.depends('date_begin', 'date_end')
|
||||
def _compute_time_data(self):
|
||||
|
||||
@@ -13,8 +13,16 @@ class EventType(models.Model):
|
||||
"Community Menu", compute="_compute_community_menu",
|
||||
readonly=False, store=True,
|
||||
help="Display community tab on website")
|
||||
menu_register_cta = fields.Boolean(
|
||||
'Add Register Button', compute='_compute_menu_register_cta',
|
||||
readonly=False, store=True)
|
||||
|
||||
@api.depends('website_menu')
|
||||
def _compute_community_menu(self):
|
||||
for event_type in self:
|
||||
event_type.community_menu = event_type.website_menu
|
||||
|
||||
@api.depends('website_menu')
|
||||
def _compute_menu_register_cta(self):
|
||||
for event_type in self:
|
||||
event_type.menu_register_cta = event_type.website_menu
|
||||
|
||||
@@ -19,7 +19,15 @@
|
||||
website: registrations, schedule, map, ...
|
||||
</div>
|
||||
</div>
|
||||
<div id="community-menu" class="row mt16" groups="base.group_no_one" attrs="{'invisible': [('website_menu', '=', False)]}">
|
||||
<div class="row mt16" name="menu_register_cta"
|
||||
groups="base.group_no_one"
|
||||
attrs="{'invisible': [('website_menu', '=', False)]}">
|
||||
<label class="col-lg-4" for="menu_register_cta"/> <field name="menu_register_cta"/>
|
||||
</div>
|
||||
<div class="row mt16" name="community_menu"
|
||||
id="community-menu"
|
||||
groups="base.group_no_one"
|
||||
attrs="{'invisible': [('website_menu', '=', False)]}">
|
||||
<label class="col-lg-4" for="community_menu"/> <field name="community_menu"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user