From 1d0a6e20a4abc36a28142b94b983e141d9c1537b Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Mon, 5 May 2014 10:57:39 +0200 Subject: [PATCH] [FIX] event: move definition of fields track_ids and count_tracks to the right module bzr revid: rco@openerp.com-20140505085739-z2asr1vrx6yyjtlh --- addons/event/event.py | 19 ++++++------------- addons/website_event_track/models/event.py | 10 ++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/addons/event/event.py b/addons/event/event.py index 1f2410a834c..5e5d1204a17 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -150,16 +150,11 @@ class event_event(osv.osv): continue return res - def _count_all(self, cr, uid, ids, field_name, arg, context=None): - res = dict(map(lambda x: (x,{'count_registrations': 0, 'count_tracks': 0,}), ids)) - try: - for data in self.browse(cr, uid, ids, context=context): - res[data.id] = {'count_registrations': len(data.registration_ids), - 'count_tracks': len(data.track_ids), - } - except: - pass - return res + def _count_registrations(self, cr, uid, ids, field_name, arg, context=None): + return { + event.id: len(event.registration_ids) + for event in self.browse(cr, uid, ids, context=context) + } _columns = { 'name': fields.char('Event Name', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}), @@ -180,7 +175,6 @@ class event_event(osv.osv): store={'event.registration': (_get_events_from_registrations, ['state'], 10), 'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['seats_max', 'registration_ids'], 20)}), 'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}), - 'track_ids': fields.one2many('event.track', 'event_id', 'Tracks', readonly=False), 'date_begin': fields.datetime('Start Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'date_end': fields.datetime('End Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'state': fields.selection([ @@ -203,8 +197,7 @@ class event_event(osv.osv): 'company_id': fields.many2one('res.company', 'Company', required=False, change_default=True, readonly=False, states={'done': [('readonly', True)]}), 'is_subscribed' : fields.function(_subscribe_fnc, type="boolean", string='Subscribed'), 'organizer_id': fields.many2one('res.partner', "Organizer"), - 'count_registrations': fields.function(_count_all, type="integer", string="Registrations", multi=True), - 'count_tracks': fields.function(_count_all, type='integer', string='Tracks', multi=True), + 'count_registrations': fields.function(_count_registrations, type="integer", string="Registrations"), } _defaults = { 'state': 'draft', diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py index c9d590d7068..954598f0bd2 100644 --- a/addons/website_event_track/models/event.py +++ b/addons/website_event_track/models/event.py @@ -124,6 +124,12 @@ class event_event(osv.osv): # put POSIX 'Etc/*' entries at the end to avoid confusing users - see bug 1086728 return [(tz,tz) for tz in sorted(pytz.all_timezones, key=lambda tz: tz if not tz.startswith('Etc/') else '_')] + def _count_tracks(self, cr, uid, ids, field_name, arg, context=None): + return { + event.id: len(event.track_ids) + for event in self.browse(cr, uid, ids, context=context) + } + def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None): res = dict.fromkeys(ids, []) for event in self.browse(cr, uid, ids, context=context): @@ -131,6 +137,7 @@ class event_event(osv.osv): res[event.id] += [tag.id for tag in track.tag_ids] res[event.id] = list(set(res[event.id])) return res + _columns = { 'tag_ids': fields.many2many('event.tag', string='Tags'), 'track_ids': fields.one2many('event.track', 'event_id', 'Tracks'), @@ -139,16 +146,19 @@ class event_event(osv.osv): 'show_track_proposal': fields.boolean('Talks Proposals'), 'show_tracks': fields.boolean('Multiple Tracks'), 'show_blog': fields.boolean('News'), + 'count_tracks': fields.function(_count_tracks, type='integer', string='Tracks'), 'tracks_tag_ids': fields.function(_get_tracks_tag_ids, type='one2many', relation='event.track.tag', string='Tags of Tracks'), 'allowed_track_tag_ids': fields.many2many('event.track.tag', string='Accepted Tags', help="List of available tags for track proposals."), 'timezone_of_event': fields.selection(_tz_get, 'Event Timezone', size=64), } + _defaults = { 'show_track_proposal': False, 'show_tracks': False, 'show_blog': False, 'timezone_of_event':lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).tz, } + def _get_new_menu_pages(self, cr, uid, event, context=None): context = context or {} result = super(event_event, self)._get_new_menu_pages(cr, uid, event, context=context)