From 06e0116283519225ed8a1e3cefdaf6a16be83409 Mon Sep 17 00:00:00 2001 From: Youssef ELOUAHBY Date: Mon, 14 Jan 2019 14:32:08 +0100 Subject: [PATCH] [Analyses pour la ville] Add analysis by tag --- golem_member/wizard/golem_member_analysis.py | 50 ++++++++++--------- .../golem_member_analysis_wizard_views.xml | 4 -- 2 files changed, 27 insertions(+), 27 deletions(-) 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 . -