diff --git a/golem_member/wizard/golem_member_analysis.py b/golem_member/wizard/golem_member_analysis.py
index 63c4d17..ac1d404 100644
--- a/golem_member/wizard/golem_member_analysis.py
+++ b/golem_member/wizard/golem_member_analysis.py
@@ -24,12 +24,6 @@ from odoo.exceptions import UserError, ValidationError
from dateutil.relativedelta import relativedelta
_LOGGER = logging.getLogger(__name__)
-def get_root_category(category_id):
- """ Get Root Category """
- if not category_id.parent_id:
- return category_id
- return get_root_category(category_id.parent_id)
-
class GolemMemberAnalysisPivot(models.TransientModel):
""" GOLEM Members Analysis Pivot Management """
_name = 'golem.member.analysis'
@@ -37,26 +31,36 @@ class GolemMemberAnalysisPivot(models.TransientModel):
season_id = fields.Many2one('golem.season', required=True)
member_id = fields.Many2one('golem.member', 'Season')
- area_id = fields.Many2one(related='member_id.area_id', store=True)
- gender = fields.Selection(related='member_id.gender', store=True)
- category_id = fields.Many2many('res.partner.category')
- age_start_season = fields.Integer(compute='_compute_age', string='Age at season start')
- age_end_season = fields.Integer(compute='_compute_age', string='Age at season end')
- age_range_start_season = fields.Many2one('golem.member.age.range', 'Age range at season start',
- compute='_compute_age_range', store=True)
- age_range_end_season = fields.Many2one('golem.member.age.range', 'Age range at season end',
- compute='_compute_age_range', store=True)
+ area_id = fields.Many2one('golem.partner.area')
+ gender = fields.Selection([('male', _('Male')),
+ ('female', _('Female')),
+ ('not_disclosed', _('Not Disclosed'))])
+ category_id = fields.Many2one('res.partner.category')
+ age_start_season = fields.Integer(string='Age at season start')
+ age_end_season = fields.Integer(string='Age at season end')
+ age_range_start_season = fields.Many2one('golem.member.age.range', 'Age range at season start')
+ age_range_end_season = fields.Many2one('golem.member.age.range', 'Age range at season end')
+ @api.model
+ def get_root_category(self, category_ids):
+ """ Get Root Category """
+ categories = self.env['res.partner.category']
+ for category_id in category_ids:
+ if not category_id.parent_id:
+ return category_id
+ categories |= category_id.parent_id
+ return self.get_root_category(categories)
+
@api.constrains('member_id')
+ @api.multi
def compute_fields(self):
+ """ compute model fields """
for rec in self:
- rec.category_id = get_root_category(rec.member_id.category_id)
-
-
- @api.depends('member_id')
- def _compute_category_id(self):
- """ Compute category_id """
- for rec in self:
- rec.category_id = get_root_category(rec.member_id.category_id)
+ rec.area_id = rec.member_id.area_id
+ rec.gender = rec.member_id.gender
+ if rec.member_id.category_id:
+ rec.category_id = self.get_root_category(rec.member_id.category_id)
+ rec._compute_age()
+ rec._compute_age_range()
@api.depends('member_id')
def _compute_age(self):
diff --git a/golem_member/wizard/golem_member_analysis_wizard_views.xml b/golem_member/wizard/golem_member_analysis_wizard_views.xml
index 35a37f7..0a909af 100644
--- a/golem_member/wizard/golem_member_analysis_wizard_views.xml
+++ b/golem_member/wizard/golem_member_analysis_wizard_views.xml
@@ -30,10 +30,6 @@ along with this program. If not, see .
-