From 5045c2ff11fa6b3844d17d83abcab24cc78d9c9e Mon Sep 17 00:00:00 2001 From: Fabien Bourgeois Date: Wed, 17 Aug 2016 10:04:42 +0200 Subject: [PATCH] [IMP]api.one if better than manual looping on recordset --- golem_activity/models/golem_activity.py | 4 ++-- .../models/golem_activity_session.py | 20 +++++++++---------- .../models/golem_activity_session.py | 12 +++++------ golem_member/models/golem_member.py | 9 +++++---- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/golem_activity/models/golem_activity.py b/golem_activity/models/golem_activity.py index 49a9198..854fc91 100644 --- a/golem_activity/models/golem_activity.py +++ b/golem_activity/models/golem_activity.py @@ -67,9 +67,9 @@ class GolemActivity(models.Model): is_current = fields.Boolean('Current season?', store=True, default=False, compute='_compute_is_current') + @api.one @api.depends('season_id') def _compute_is_current(self): """ Checks if activity is active for current season """ default_season = self._default_season() - for a in self: - a.is_current = (default_season == a.season_id) + self.is_current = (default_season == self.season_id) diff --git a/golem_activity_session/models/golem_activity_session.py b/golem_activity_session/models/golem_activity_session.py index 44fadd1..0601666 100644 --- a/golem_activity_session/models/golem_activity_session.py +++ b/golem_activity_session/models/golem_activity_session.py @@ -84,14 +84,14 @@ class GolemActivitySession(models.Model): session_name = fields.Char('Name', compute='_compute_full_name', store=True, index=True) + @api.one @api.depends('name', 'default_code') def _compute_full_name(self): """ Provide a better displayed name """ - for s in self: - session_name = unicode(s.name) - if s.default_code: - session_name = u'[{}] {}'.format(s.default_code, session_name) - s.session_name = session_name + session_name = unicode(self.name) + if self.default_code: + session_name = u'[{}] {}'.format(self.default_code, session_name) + self.session_name = session_name member_ids = fields.Many2many('golem.member', string='Members') type_of = fields.Selection([('activity', _('Activity')), @@ -109,10 +109,10 @@ class GolemActivitySession(models.Model): places_used = fields.Integer('Places used', compute='_compute_places_used') + @api.one @api.depends('member_ids') def _compute_places_used(self): - for s in self: - s.places_used = len(s.member_ids) + self.places_used = len(self.member_ids) # TODO: to link with calendar.event activity_id = fields.Many2one('golem.activity', string='Activity', @@ -195,11 +195,11 @@ class GolemActivitySession(models.Model): places_remain = fields.Integer('Remaining places', store=True, compute='_compute_places_remain') + @api.one @api.depends('places', 'member_ids') def _compute_places_remain(self): - for s in self: - used = len(s.member_ids) - s.places_remain = s.places - used + used = len(self.member_ids) + self.places_remain = self.places - used @api.constrains('places_remain') def _check_remaining_places(self): diff --git a/golem_activity_session_place/models/golem_activity_session.py b/golem_activity_session_place/models/golem_activity_session.py index e54d488..27e23f0 100644 --- a/golem_activity_session_place/models/golem_activity_session.py +++ b/golem_activity_session_place/models/golem_activity_session.py @@ -26,14 +26,14 @@ class GolemActivitySession(models.Model): is_overbooked = fields.Boolean('Allow overbook?', default=False) places_overbooked = fields.Integer('Places with overbook', default=0) + @api.one @api.depends('places', 'is_overbooked', 'places_overbooked', 'member_ids') def _compute_places_remain(self): - for s in self: - used = len(s.member_ids) - if not s.is_overbooked: - s.places_remain = s.places - used - else: - s.places_remain = s.places_overbooked - used + used = len(self.member_ids) + if not self.is_overbooked: + self.places_remain = self.places - used + else: + self.places_remain = self.places_overbooked - used @api.onchange('is_overbooked', 'places') def onchange_is_overbooked(self): diff --git a/golem_member/models/golem_member.py b/golem_member/models/golem_member.py index 9496f11..4e4c216 100644 --- a/golem_member/models/golem_member.py +++ b/golem_member/models/golem_member.py @@ -78,13 +78,14 @@ class GolemMember(models.Model): 'UNIQUE (number_manual)', _('This member number has already been used.'))] + @api.one @api.depends('season_ids') def _compute_is_current(self): """ Computes is current according to seasons """ default_s = self._default_season() - for m in self: - m.is_current = default_s in m.season_ids + self.is_current = default_s in self.season_ids + @api.one @api.depends('number') def _compute_is_number_manual(self): conf = self.env['ir.config_parameter'] @@ -183,10 +184,10 @@ class GolemMemberNumber(models.Model): auto_join=True) number = fields.Char('Number', index=True, readonly=True) + @api.one @api.depends('season_id') def _compute_name(self): - for row in self: - row.name = row.season_id.name + self.name = self.season_id.name class GolemNumberConfig(models.TransientModel):