From c06eda9a63ab17f1431b57461298d7055eb4881b Mon Sep 17 00:00:00 2001 From: Youssef ELOUAHBY Date: Mon, 14 Jan 2019 03:30:33 +0100 Subject: [PATCH] [Analyses pour la ville] Add member analysis assistant --- .../wizard/golem_member_analysis_wizard.py | 95 +++++++++++++++++++ .../golem_member_analysis_wizard_views.xml | 59 ++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 golem_member/wizard/golem_member_analysis_wizard.py create mode 100644 golem_member/wizard/golem_member_analysis_wizard_views.xml diff --git a/golem_member/wizard/golem_member_analysis_wizard.py b/golem_member/wizard/golem_member_analysis_wizard.py new file mode 100644 index 0000000..d594613 --- /dev/null +++ b/golem_member/wizard/golem_member_analysis_wizard.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2019 Fabien Bourgeois +# Copyright 2019 Youssef El Ouahby +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Members Analysis Management """ + +import logging +from odoo import models, fields, api, _ +from odoo.exceptions import UserError, ValidationError +_LOGGER = logging.getLogger(__name__) + + +class GolemMemberAnalysis(models.TransientModel): + """ GOLEM Members Analysis Management """ + _name = 'golem.member.analysis.wizard' + _description = 'GOLEM Members Analysis Wizard Management' + + season_id = fields.Many2one('golem.season', 'Season', required=True) + #member_analysis_ids = fields.Many2many('golem.member.analysis.pivot', string='Members list') + analyse_type = fields.Selection([('age_start_gender', 'By age at season start and gender'), + ('age_end_gender', 'By age at season end and gender'), + ('age_start_area', 'By age at season start and area'), + ('age_end_area', 'By age at season end and area'), + ('age_start_tag', 'By age at season start and tag'), + ('age_end_tag', 'By age at season end and tag')], + required=True) + category_id = fields.Many2one('res.partner.category') + + + @api.multi + def get_pivot_view(self): + self.ensure_one() + rec = self[0] + if rec.analyse_type == 'age_start_gender': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_start_gender', False) + elif rec.analyse_type == 'age_end_gender': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_end_gender', False) + elif rec.analyse_type == 'age_start_area': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_start_area', False) + elif rec.analyse_type == 'age_end_area': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_end_area', False) + elif rec.analyse_type == 'age_start_tag': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_start_tag', False) + elif rec.analyse_type == 'age_end_tag': + return self.env.ref('golem_member.golem_member_analysis_pivot_age_end_tag', False) + + + @api.multi + def members_analye(self): + self.ensure_one() + analysis_rec = self[0] + members = self.env['golem.member'].search([]).filtered( + lambda m: analysis_rec.season_id.id in m.season_ids.ids) + self.env['golem.member.analysis'].search([]).unlink() + if members: + for member in members: + self.env['golem.member.analysis'].create({ + 'member_id': member.id, + 'season_id': analysis_rec.season_id.id, + 'analyse_type': analysis_rec.analyse_type + }) + analyse_pivot = analysis_rec.get_pivot_view() + + return { + 'name': _('Member Analysis'), + 'type': 'ir.actions.act_window', + 'res_model': 'golem.member.analysis', + 'view_type': 'pivot', + 'view_mode': 'pivot', + #'views': [(analyse_pivot.id, 'form')], + 'view_id': analyse_pivot.id, + 'target': 'new', + } + + #record = self[0] + #data = {} + #data = self.read(['season_id', 'member_analysis_ids', 'analyse_type'])[0] + #_LOGGER.warning('________________________________________________________________________') + #_LOGGER.warning('analysis function') + #return self.env['report'].get_action(self, 'golem_member.golem_member_analysis_report', data=data) + #return self.env['report'].get_action(self, 'golem_resource_report.golem_reservation_report', data=data) diff --git a/golem_member/wizard/golem_member_analysis_wizard_views.xml b/golem_member/wizard/golem_member_analysis_wizard_views.xml new file mode 100644 index 0000000..35a37f7 --- /dev/null +++ b/golem_member/wizard/golem_member_analysis_wizard_views.xml @@ -0,0 +1,59 @@ + + + + + + + + + GOLEM Member Analysis Wizard Form + golem.member.analysis.wizard + +
+ + + + + + +
+
+
+ +
+
+
+ + + + + + +
+