diff --git a/addons/website_event_track/__openerp__.py b/addons/website_event_track/__openerp__.py index f71f3fa7c6a..5e02b57aa22 100644 --- a/addons/website_event_track/__openerp__.py +++ b/addons/website_event_track/__openerp__.py @@ -21,6 +21,7 @@ Adds support for: 'depends': ['website_event'], 'data': [ 'data/website_event_track_data.xml', + 'views/event_views.xml', 'views/website_event_track_templates.xml', 'views/website_event_track_views.xml', 'data/website_event_track_tip_data.xml', diff --git a/addons/website_event_track/models/__init__.py b/addons/website_event_track/models/__init__.py index cc0f7a9afdc..434b7104d5c 100644 --- a/addons/website_event_track/models/__init__.py +++ b/addons/website_event_track/models/__init__.py @@ -1 +1,2 @@ import website_event_track +import event diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py new file mode 100644 index 00000000000..4cc1e33e8f0 --- /dev/null +++ b/addons/website_event_track/models/event.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +from openerp import models, fields, api +from openerp.tools.translate import _ +from openerp.addons.website.models.website import slug + + +class event_event(models.Model): + _inherit = "event.event" + + @api.multi + def _count_tracks(self): + track_data = self.env['event.track'].read_group([('state', '!=', 'cancel')], + ['event_id', 'state'], ['event_id']) + result = dict((data['event_id'][0], data['event_id_count']) for data in track_data) + for event in self: + event.count_tracks = result.get(event.id, 0) + + @api.one + def _count_sponsor(self): + self.count_sponsor = len(self.sponsor_ids) + + @api.one + @api.depends('track_ids.tag_ids') + def _get_tracks_tag_ids(self): + self.tracks_tag_ids = self.track_ids.mapped('tag_ids').ids + + track_ids = fields.One2many('event.track', 'event_id', 'Tracks') + sponsor_ids = fields.One2many('event.sponsor', 'event_id', 'Sponsors') + show_track_proposal = fields.Boolean('Tracks Proposals', compute='_get_show_menu', inverse='_set_show_menu', store=True) + show_tracks = fields.Boolean('Show Tracks on Website', compute='_get_show_menu', inverse='_set_show_menu', store=True) + count_tracks = fields.Integer('Tracks', compute='_count_tracks') + allowed_track_tag_ids = fields.Many2many('event.track.tag', relation='event_allowed_track_tags_rel', string='Available Track Tags') + tracks_tag_ids = fields.Many2many('event.track.tag', relation='event_track_tags_rel', string='Track Tags', compute='_get_tracks_tag_ids', store=True) + count_sponsor = fields.Integer('# Sponsors', compute='_count_sponsor') + + @api.multi + def _get_new_menu_pages(self): + self.ensure_one() + result = super(event_event, self)._get_new_menu_pages() + if self.show_tracks: + result.append((_('Talks'), '/event/%s/track' % slug(self))) + result.append((_('Agenda'), '/event/%s/agenda' % slug(self))) + if self.show_track_proposal: + result.append((_('Talk Proposals'), '/event/%s/track_proposal' % slug(self))) + return result + + @api.multi + def _set_show_menu(self): + for event in self: + # if the number of menu items have changed, then menu items must be regenerated + if event.menu_id: + nbr_menu_items = len(event._get_new_menu_pages()) + if nbr_menu_items != len(event.menu_id.child_id): + event.menu_id.unlink() + return super(event_event, self)._set_show_menu() diff --git a/addons/website_event_track/models/website_event_track.py b/addons/website_event_track/models/website_event_track.py index 2d538c4faeb..d648521a72c 100644 --- a/addons/website_event_track/models/website_event_track.py +++ b/addons/website_event_track/models/website_event_track.py @@ -124,57 +124,6 @@ class event_track(models.Model): } -class event_event(models.Model): - _inherit = "event.event" - - @api.multi - def _count_tracks(self): - track_data = self.env['event.track'].read_group([('state', '!=', 'cancel')], - ['event_id', 'state'], ['event_id']) - result = dict((data['event_id'][0], data['event_id_count']) for data in track_data) - for event in self: - event.count_tracks = result.get(event.id, 0) - - @api.one - def _count_sponsor(self): - self.count_sponsor = len(self.sponsor_ids) - - @api.one - @api.depends('track_ids.tag_ids') - def _get_tracks_tag_ids(self): - self.tracks_tag_ids = self.track_ids.mapped('tag_ids').ids - - track_ids = fields.One2many('event.track', 'event_id', 'Tracks') - sponsor_ids = fields.One2many('event.sponsor', 'event_id', 'Sponsors') - show_track_proposal = fields.Boolean('Tracks Proposals', compute='_get_show_menu', inverse='_set_show_menu', store=True) - show_tracks = fields.Boolean('Show Tracks on Website', compute='_get_show_menu', inverse='_set_show_menu', store=True) - count_tracks = fields.Integer('Tracks', compute='_count_tracks') - allowed_track_tag_ids = fields.Many2many('event.track.tag', relation='event_allowed_track_tags_rel', string='Available Track Tags') - tracks_tag_ids = fields.Many2many('event.track.tag', relation='event_track_tags_rel', string='Track Tags', compute='_get_tracks_tag_ids', store=True) - count_sponsor = fields.Integer('# Sponsors', compute='_count_sponsor') - - @api.multi - def _get_new_menu_pages(self): - self.ensure_one() - result = super(event_event, self)._get_new_menu_pages() - if self.show_tracks: - result.append((_('Talks'), '/event/%s/track' % slug(self))) - result.append((_('Agenda'), '/event/%s/agenda' % slug(self))) - if self.show_track_proposal: - result.append((_('Talk Proposals'), '/event/%s/track_proposal' % slug(self))) - return result - - @api.multi - def _set_show_menu(self): - for event in self: - # if the number of menu items have changed, then menu items must be regenerated - if event.menu_id: - nbr_menu_items = len(event._get_new_menu_pages()) - if nbr_menu_items != len(event.menu_id.child_id): - event.menu_id.unlink() - return super(event_event, self)._set_show_menu() - - class event_sponsors_type(models.Model): _name = "event.sponsor.type" _order = "sequence" diff --git a/addons/website_event_track/views/event_views.xml b/addons/website_event_track/views/event_views.xml new file mode 100644 index 00000000000..4b927f99876 --- /dev/null +++ b/addons/website_event_track/views/event_views.xml @@ -0,0 +1,36 @@ + + + + + Event Tracks + + event.event + +
+ + +
+ +
+ +
+
+
+
+
diff --git a/addons/website_event_track/views/website_event_track_views.xml b/addons/website_event_track/views/website_event_track_views.xml index fc114807eff..ec31351f6e1 100644 --- a/addons/website_event_track/views/website_event_track_views.xml +++ b/addons/website_event_track/views/website_event_track_views.xml @@ -318,39 +318,5 @@ Tracks define the agenda of your event. These can be a talk, a round table, a me - - - Event Tracks - - event.event - -
- - -
- -
- -
-
-
-
-