From 150cb1ac39b472f6de4d89d2869fa83846161c50 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Sun, 26 Aug 2018 18:16:50 +0200 Subject: [PATCH] [ADD][FIX]GOLEM Member Minor enhancements * add can leave boolean ; * do not store is minor / adult and create efficient search function. --- golem_member_minor/__manifest__.py | 4 +-- golem_member_minor/i18n/fr.po | 14 +++++---- .../i18n/golem_member_minor.pot | 9 ++++-- .../migrations/10.0.1.1.0/post-migrate.py | 25 ++++++++++++++++ golem_member_minor/models/golem_member.py | 27 ++++++++++++----- .../views/golem_member_views.xml | 29 ++++++++++--------- 6 files changed, 77 insertions(+), 31 deletions(-) create mode 100644 golem_member_minor/migrations/10.0.1.1.0/post-migrate.py diff --git a/golem_member_minor/__manifest__.py b/golem_member_minor/__manifest__.py index d9b3417..c966b54 100644 --- a/golem_member_minor/__manifest__.py +++ b/golem_member_minor/__manifest__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Fabien Bourgeois +# Copyright 2017-2018 Fabien Bourgeois # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -18,7 +18,7 @@ { 'name': 'GOLEM members minor', 'summary': 'GOLEM non-profit members minor management', - 'version': '10.0.1.0.0', + 'version': '10.0.1.1.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_member_minor/i18n/fr.po b/golem_member_minor/i18n/fr.po index a07b081..5834c19 100644 --- a/golem_member_minor/i18n/fr.po +++ b/golem_member_minor/i18n/fr.po @@ -6,25 +6,29 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-01 20:16+0000\n" -"PO-Revision-Date: 2017-05-01 20:16+0000\n" +"POT-Creation-Date: 2018-08-26 16:15+0000\n" +"PO-Revision-Date: 2018-08-26 18:15+0200\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: \n" #. module: golem_member_minor #: model:ir.model.fields,field_description:golem_member_minor.field_golem_member_activities_participation msgid "Activities participation?" msgstr "Participation aux activités?" +#. module: golem_member_minor +#: model:ir.model.fields,field_description:golem_member_minor.field_golem_member_leave_alone +msgid "Can leave alone?" +msgstr "Peut quitter la structure seul?" + #. module: golem_member_minor #: model:ir.model,name:golem_member_minor.model_golem_member msgid "GOLEM Member" -msgstr "GOLEM : Adhérent" +msgstr "Usager" #. module: golem_member_minor #: model:ir.ui.view,arch_db:golem_member_minor.golem_member_search_inherit_minor diff --git a/golem_member_minor/i18n/golem_member_minor.pot b/golem_member_minor/i18n/golem_member_minor.pot index 6531b4c..2059c34 100644 --- a/golem_member_minor/i18n/golem_member_minor.pot +++ b/golem_member_minor/i18n/golem_member_minor.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-01 20:16+0000\n" -"PO-Revision-Date: 2017-05-01 20:16+0000\n" +"POT-Creation-Date: 2018-08-26 16:15+0000\n" +"PO-Revision-Date: 2018-08-26 16:15+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,6 +20,11 @@ msgstr "" msgid "Activities participation?" msgstr "" +#. module: golem_member_minor +#: model:ir.model.fields,field_description:golem_member_minor.field_golem_member_leave_alone +msgid "Can leave alone?" +msgstr "" + #. module: golem_member_minor #: model:ir.model,name:golem_member_minor.model_golem_member msgid "GOLEM Member" diff --git a/golem_member_minor/migrations/10.0.1.1.0/post-migrate.py b/golem_member_minor/migrations/10.0.1.1.0/post-migrate.py new file mode 100644 index 0000000..3dbbc2f --- /dev/null +++ b/golem_member_minor/migrations/10.0.1.1.0/post-migrate.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Fabien Bourgeois +# +# 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 . + +""" Post-migration script """ + +from openupgradelib import openupgrade + +@openupgrade.migrate(use_env=False) +def migrate(cursor, version): + """ Remove is_minor obsolete column """ + cursor.execute('ALTER TABLE golem_member DROP COLUMN IF EXISTS is_minor') diff --git a/golem_member_minor/models/golem_member.py b/golem_member_minor/models/golem_member.py index d1c6976..ab31550 100644 --- a/golem_member_minor/models/golem_member.py +++ b/golem_member_minor/models/golem_member.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Fabien Bourgeois +# Copyright 2017-2018 Fabien Bourgeois # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -17,27 +17,38 @@ """ GOLEM Member Minor management """ -from datetime import datetime, timedelta +from datetime import date, timedelta from odoo import models, fields, api +ADULT_DURATION = timedelta(days=365.25*18) + class GolemMember(models.Model): """ GOLEM Member adaptations """ _inherit = 'golem.member' - ADULT_DURATION = timedelta(days=365*18) legal_guardian_ids = fields.Many2many( - 'res.partner', string='Legal guardians', index=True, + 'res.partner', string='Legal guardians', index=True, auto_join=True, domain="['&', ('is_company', '=', False), ('id', '!=', partner_id)]") activities_participation = fields.Boolean('Activities participation?') + leave_alone = fields.Boolean('Can leave alone?') is_minor = fields.Boolean('Is minor?', compute='_compute_is_minor', - store=True, default=False) + search='_search_is_minor', default=False) - @api.multi @api.depends('birthdate_date') def _compute_is_minor(self): for member in self: if member.birthdate_date: - member.is_minor = ((datetime.now() - self.ADULT_DURATION) < - fields.Datetime.from_string(member.birthdate_date)) + member.is_minor = ((date.today() - ADULT_DURATION) < + fields.Date.from_string(member.birthdate_date)) else: member.is_minor = False + + def _search_is_minor(self, operator, value): + """ Search function for is minor """ + today = date.today() + adult_date = today - ADULT_DURATION + if operator == '=': + operator = '>' if value else '<=' + else: + operator = '<=' if value else '>' + return [('birthdate_date', operator, adult_date)] diff --git a/golem_member_minor/views/golem_member_views.xml b/golem_member_minor/views/golem_member_views.xml index 2078531..412df59 100644 --- a/golem_member_minor/views/golem_member_views.xml +++ b/golem_member_minor/views/golem_member_views.xml @@ -1,7 +1,7 @@