diff --git a/golem_season/__manifest__.py b/golem_season/__manifest__.py index 1abf51e..cd0726e 100644 --- a/golem_season/__manifest__.py +++ b/golem_season/__manifest__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016 Fabien Bourgeois +# Copyright 2016-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,12 +18,18 @@ { 'name': 'GOLEM seasons', 'summary': 'GOLEM non-profit seasons management', - 'version': '10.0.1.0.1', + 'description': '''GOLEM non-profit seasons management : + - add season with name and period ; + - choose on per default season ; + - link optionnally one or many memberships types''', + 'version': '10.0.1.1.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', 'application': False, 'installable': True, 'depends': ['golem_base'], - 'data': ['security/ir.model.access.csv', 'views/golem_season_views.xml'] + 'data': ['security/ir.model.access.csv', + 'views/golem_season_views.xml', + 'views/membership_views.xml'] } diff --git a/golem_season/i18n/fr.po b/golem_season/i18n/fr.po index 3ea8a9d..9fdc5f9 100644 --- a/golem_season/i18n/fr.po +++ b/golem_season/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-18 14:18+0000\n" -"PO-Revision-Date: 2018-01-18 14:18+0000\n" +"POT-Creation-Date: 2018-02-28 07:38+0000\n" +"PO-Revision-Date: 2018-02-28 07:38+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -31,7 +31,7 @@ msgid "Created on" msgstr "Créé le" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:75 +#: code:addons/golem_season/models/golem_season.py:73 #, python-format msgid "Current period cannot be included into another existing period." msgstr "La période actuelle est en conflit avec une période existante." @@ -57,7 +57,7 @@ msgid "Display Name" msgstr "Nom affiché" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:71 +#: code:addons/golem_season/models/golem_season.py:69 #, python-format msgid "End of the period is in range of an existing period." msgstr "La fin de la période est en conflit avec une période existante." @@ -93,15 +93,21 @@ msgstr "Dernière mise à jour par" msgid "Last Updated on" msgstr "Dernière mise à jour le" +#. module: golem_season +#: model:ir.model.fields,field_description:golem_season.field_product_product_season_id +#: model:ir.model.fields,field_description:golem_season.field_product_template_season_id +msgid "Linked season" +msgstr "Saison liée" + #. module: golem_season #: model:ir.ui.view,arch_db:golem_season.golem_season_view_form msgid "Make this season as default" msgstr "Activer cette saison par défaut" #. module: golem_season -#: model:ir.model.fields,field_description:golem_season.field_golem_season_membership_id -msgid "Membership type" -msgstr "Type d'adhésion" +#: model:ir.model.fields,field_description:golem_season.field_golem_season_membership_ids +msgid "Membership types" +msgstr "Types d'adhésion" #. module: golem_season #: model:ir.model.fields,field_description:golem_season.field_golem_season_date_end @@ -113,8 +119,14 @@ msgstr "Fin de la période" msgid "Period start" msgstr "Début de la période" +#. module: golem_season +#: model:ir.model,name:golem_season.model_product_template +msgid "Product Template" +msgstr "Modèle d'article" + #. module: golem_season #: model:ir.ui.view,arch_db:golem_season.golem_season_view_form +#: model:ir.ui.view,arch_db:golem_season.membership_product_search_form_view_inherit_golem_season msgid "Season" msgstr "Saison" @@ -129,25 +141,25 @@ msgid "Seasons" msgstr "Saisons" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:62 +#: code:addons/golem_season/models/golem_season.py:60 #, python-format msgid "Start of the period cannot be after end of the period." msgstr "Le début de la période ne peut être postérieur à sa fin." #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:67 +#: code:addons/golem_season/models/golem_season.py:65 #, python-format msgid "Start of the period is in range of an existing period." msgstr "Le début de la période est en conflit avec une période existante." #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:58 +#: code:addons/golem_season/models/golem_season.py:56 #, python-format msgid "The date end is required" msgstr "The date end is required" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:60 +#: code:addons/golem_season/models/golem_season.py:58 #, python-format msgid "The date start is required" msgstr "The date start is required" @@ -160,8 +172,7 @@ msgid "This season name has already been used." msgstr "Ce nom pour la saison a déjà été utilisé. Merci d'en choisir un autre." #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:114 +#: code:addons/golem_season/models/golem_season.py:112 #, python-format msgid "You can't delete the default season" msgstr "Vous ne pouvez pas supprimer la saison par défaut" - diff --git a/golem_season/i18n/golem_season.pot b/golem_season/i18n/golem_season.pot index 8f0b739..4ca194b 100644 --- a/golem_season/i18n/golem_season.pot +++ b/golem_season/i18n/golem_season.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-18 14:18+0000\n" -"PO-Revision-Date: 2018-01-18 14:18+0000\n" +"POT-Creation-Date: 2018-02-28 07:38+0000\n" +"PO-Revision-Date: 2018-02-28 07:38+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -31,7 +31,7 @@ msgid "Created on" msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:75 +#: code:addons/golem_season/models/golem_season.py:73 #, python-format msgid "Current period cannot be included into another existing period." msgstr "" @@ -57,7 +57,7 @@ msgid "Display Name" msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:71 +#: code:addons/golem_season/models/golem_season.py:69 #, python-format msgid "End of the period is in range of an existing period." msgstr "" @@ -93,14 +93,20 @@ msgstr "" msgid "Last Updated on" msgstr "" +#. module: golem_season +#: model:ir.model.fields,field_description:golem_season.field_product_product_season_id +#: model:ir.model.fields,field_description:golem_season.field_product_template_season_id +msgid "Linked season" +msgstr "" + #. module: golem_season #: model:ir.ui.view,arch_db:golem_season.golem_season_view_form msgid "Make this season as default" msgstr "" #. module: golem_season -#: model:ir.model.fields,field_description:golem_season.field_golem_season_membership_id -msgid "Membership type" +#: model:ir.model.fields,field_description:golem_season.field_golem_season_membership_ids +msgid "Membership types" msgstr "" #. module: golem_season @@ -113,8 +119,14 @@ msgstr "" msgid "Period start" msgstr "" +#. module: golem_season +#: model:ir.model,name:golem_season.model_product_template +msgid "Product Template" +msgstr "" + #. module: golem_season #: model:ir.ui.view,arch_db:golem_season.golem_season_view_form +#: model:ir.ui.view,arch_db:golem_season.membership_product_search_form_view_inherit_golem_season msgid "Season" msgstr "" @@ -129,25 +141,25 @@ msgid "Seasons" msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:62 +#: code:addons/golem_season/models/golem_season.py:60 #, python-format msgid "Start of the period cannot be after end of the period." msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:67 +#: code:addons/golem_season/models/golem_season.py:65 #, python-format msgid "Start of the period is in range of an existing period." msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:58 +#: code:addons/golem_season/models/golem_season.py:56 #, python-format msgid "The date end is required" msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:60 +#: code:addons/golem_season/models/golem_season.py:58 #, python-format msgid "The date start is required" msgstr "" @@ -160,7 +172,7 @@ msgid "This season name has already been used." msgstr "" #. module: golem_season -#: code:addons/golem_season/models/golem_season.py:114 +#: code:addons/golem_season/models/golem_season.py:112 #, python-format msgid "You can't delete the default season" msgstr "" diff --git a/golem_season/models/__init__.py b/golem_season/models/__init__.py index c7a55cc..7b57d01 100644 --- a/golem_season/models/__init__.py +++ b/golem_season/models/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016 Fabien Bourgeois +# Copyright 2016-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 @@ -15,4 +15,4 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from . import golem_season +from . import product_template, golem_season diff --git a/golem_season/models/golem_season.py b/golem_season/models/golem_season.py index 98d6014..3120d60 100644 --- a/golem_season/models/golem_season.py +++ b/golem_season/models/golem_season.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016 Fabien Bourgeois +# Copyright 2016-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 @@ -28,21 +28,22 @@ class GolemSeason(models.Model): _('This season name has already been used.'))] name = fields.Char('Season name', copy=False, required=True) - membership_id = fields.Many2one('product.template', 'Membership type', - domain=[('membership', '=', True)]) + membership_ids = fields.One2many('product.template', 'season_id', + string='Membership types', + domain=[('membership', '=', True)]) member_counter = fields.Integer('Counter for member number generation', readonly=True, default=1) date_start = fields.Date('Period start') date_end = fields.Date('Period end') - @api.onchange('membership_id') + @api.onchange('membership_ids') def _onchange_season_dates(self): """ Sets defaults dates according to membership type """ for season in self: - if season.membership_id and not season.date_start: + if season.membership_ids and not season.date_start: season.update({ - 'date_start': season.membership_id.membership_date_from, - 'date_end': season.membership_id.membership_date_to + 'date_start': season.membership_ids[0].membership_date_from, + 'date_end': season.membership_ids[0].membership_date_to }) @api.constrains('date_start', 'date_end') diff --git a/golem_season/models/product_template.py b/golem_season/models/product_template.py new file mode 100644 index 0000000..9f949f6 --- /dev/null +++ b/golem_season/models/product_template.py @@ -0,0 +1,37 @@ +# -*- 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 . + +""" Product adaptations """ + +from odoo import models, fields, api + +class ProductTemplate(models.Model): + """ Product Template adaptations """ + _inherit = 'product.template' + + season_id = fields.Many2one('golem.season', 'Linked season', index=True) + + @api.onchange('season_id') + def onchange_season(self): + """ Adapts period to selected season if needed """ + for product in self: + if product.membership and product.season_id \ + and not product.membership_date_from: + product.update({ + 'membership_date_from': product.season_id.date_start, + 'membership_date_to': product.season_id.date_end + }) diff --git a/golem_season/tests/test_golem_season.py b/golem_season/tests/test_golem_season.py index 3d5c403..3436f1c 100644 --- a/golem_season/tests/test_golem_season.py +++ b/golem_season/tests/test_golem_season.py @@ -74,5 +74,5 @@ class TestGolemSeason(TransactionCase): 'membership_date_to': '2018-11-01'}) new_season = self.env['golem.season'].create({'name': 'Name', - 'membership_id': membership.id}) - self.assertEqual(new_season.membership_id, membership) + 'membership_ids': [(4, membership.id, 0)]}) + self.assertEqual(new_season.membership_ids[0], membership) diff --git a/golem_season/views/golem_season_views.xml b/golem_season/views/golem_season_views.xml index 7864c94..9783ce5 100644 --- a/golem_season/views/golem_season_views.xml +++ b/golem_season/views/golem_season_views.xml @@ -36,7 +36,8 @@ along with this program. If not, see . - + + + + + + + + + + Membership Product Form adaptations + product.template + + + + + + + + + + + Membership Product Search adaptations + product.template + + + + + + + + + + + + +