diff --git a/golem_family_history/__manifest__.py b/golem_family_history/__manifest__.py index 1034f9c..a1b9015 100644 --- a/golem_family_history/__manifest__.py +++ b/golem_family_history/__manifest__.py @@ -20,12 +20,12 @@ 'name': 'GOLEM Families History', 'summary': 'GOLEM Families History', 'description': 'GOLEM Families History', - 'version': '10.0.0.0.1', + 'version': '10.0.0.1.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois, Youssef El ouahby', 'license': 'AGPL-3', 'application': False, 'installable': True, 'depends': ['golem_family'], - 'data': ['views/golem_family_views.xml'] + 'data': ['security/ir.model.access.csv', 'views/golem_family_views.xml'] } diff --git a/golem_family_history/i18n/fr.po b/golem_family_history/i18n/fr.po new file mode 100644 index 0000000..94df725 --- /dev/null +++ b/golem_family_history/i18n/fr.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_family_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-26 06:41+0000\n" +"PO-Revision-Date: 2018-10-26 08:45+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" +"Plural-Forms: \n" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_city +msgid "City" +msgstr "Ville" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_country_id +msgid "Country" +msgstr "Pays" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_family_id +msgid "Family" +msgstr "Famille" + +#. module: golem_family_history +#: model:ir.model,name:golem_family_history.model_golem_family +msgid "GOLEM Family Entity" +msgstr "Famille" + +#. module: golem_family_history +#: model:ir.model,name:golem_family_history.model_golem_family_history +msgid "GOLEM Family History Management" +msgstr "GOLEM Family History Management" + +#. module: golem_family_history +#: model:ir.ui.view,arch_db:golem_family_history.golem_family_form_inherit_golem_family_history +msgid "History" +msgstr "Historique" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_family_history_ids +msgid "History details" +msgstr "Historique" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_id +msgid "ID" +msgstr "ID" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history___last_update +msgid "Last Modified on" +msgstr "Dernière Modification le" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_member_ids +msgid "Members" +msgstr "Adhérents" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_season_id +msgid "Season" +msgstr "Saison" + +#. module: golem_family_history +#: code:addons/golem_family_history/models/golem_family_history.py:30 +#: sql_constraint:golem.family.history:0 +#, python-format +msgid "You can only have one history line for each family and season combination." +msgstr "Vous ne pouvez avoir qu'une seule ligne par famille par saison." + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_zip_code +msgid "ZIP" +msgstr "Code postal" + diff --git a/golem_family_history/i18n/golem_family_history.pot b/golem_family_history/i18n/golem_family_history.pot new file mode 100644 index 0000000..e7207d5 --- /dev/null +++ b/golem_family_history/i18n/golem_family_history.pot @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_family_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-26 06:41+0000\n" +"PO-Revision-Date: 2018-10-26 06:41+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_city +msgid "City" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_country_id +msgid "Country" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_create_uid +msgid "Created by" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_create_date +msgid "Created on" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_display_name +msgid "Display Name" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_family_id +msgid "Family" +msgstr "" + +#. module: golem_family_history +#: model:ir.model,name:golem_family_history.model_golem_family +msgid "GOLEM Family Entity" +msgstr "" + +#. module: golem_family_history +#: model:ir.model,name:golem_family_history.model_golem_family_history +msgid "GOLEM Family History Management" +msgstr "" + +#. module: golem_family_history +#: model:ir.ui.view,arch_db:golem_family_history.golem_family_form_inherit_golem_family_history +msgid "History" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_family_history_ids +msgid "History details" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_id +msgid "ID" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history___last_update +msgid "Last Modified on" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_write_date +msgid "Last Updated on" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_member_ids +msgid "Members" +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_season_id +msgid "Season" +msgstr "" + +#. module: golem_family_history +#: code:addons/golem_family_history/models/golem_family_history.py:30 +#: sql_constraint:golem.family.history:0 +#, python-format +msgid "You can only have one history line for each member and season combination." +msgstr "" + +#. module: golem_family_history +#: model:ir.model.fields,field_description:golem_family_history.field_golem_family_history_zip_code +msgid "ZIP" +msgstr "" + diff --git a/golem_family_history/models/golem_family.py b/golem_family_history/models/golem_family.py index d242016..e9985e0 100644 --- a/golem_family_history/models/golem_family.py +++ b/golem_family_history/models/golem_family.py @@ -18,34 +18,33 @@ """ GOLEM Families Adaptations""" -from odoo import models, fields, api, _ +from odoo import models, fields, api class GolemFamily(models.Model): """ GOLEM Family Adaptations """ _inherit = 'golem.family' - family_history_ids = fields.One2many('golem.family.history', 'family_id') + family_history_ids = fields.One2many('golem.family.history', 'family_id', + readonly=True, string='History details') - @api.constrains('city', 'country_id', 'member_ids') + @api.constrains('zip', 'city', 'country_id', 'member_ids') def save_family_history(self): - """ save family history """ + """ Saves family history """ default_season = self.env['golem.season'].search([('is_default', '=', True)], limit=1) for family in self: - history = self.env['golem.family.history'].search([ + history_id = self.env['golem.family.history'].search([ ('family_id', '=', family.id), ('season_id', '=', default_season.id)], limit=1) - if history: - history.write({ - 'city': family.city, - 'country_id': family.country_id.id, - 'member_ids':[(6, False, family.member_ids.ids)] - }) + history_data = { + 'zip_code': family.zip, + 'city': family.city, + 'country_id': family.country_id.id, + 'member_ids':[(6, False, family.member_ids.ids)] + } + if history_id: + history_id.write(history_data) else: - self.env['golem.family.history'].create({ - 'family_id': family.id, - 'season_id': default_season.id, - 'city': family.city, - 'country_id': family.country_id.id, - 'member_ids':[(6, False, family.member_ids.ids)] - }) + history_data.update({'family_id': family.id, + 'season_id': default_season.id}) + self.env['golem.family.history'].create(history_data) diff --git a/golem_family_history/models/golem_family_history.py b/golem_family_history/models/golem_family_history.py index d4c8e43..1eb4a23 100644 --- a/golem_family_history/models/golem_family_history.py +++ b/golem_family_history/models/golem_family_history.py @@ -18,18 +18,24 @@ """ GOLEM Family History Management """ -from odoo import models, fields, api, _ +from odoo import models, fields, _ class GolemFamilyHistory(models.Model): """ GOLEM Family History Management """ _name = 'golem.family.history' _description = 'GOLEM Family History Management' - _order = "season_id desc, id desc" + _order = 'season_id desc, id desc' + _sql_constraints = [('golem_family_history_family_season_uniq', + 'UNIQUE (family_id, season_id)', + _('You can only have one history line for each ' + 'family and season combination.'))] family_id = fields.Many2one('golem.family', required=True, auto_join=True, - ondelete="cascade") + string='Family', ondelete='cascade') season_id = fields.Many2one('golem.season', required=True, auto_join=True, - ondelete="cascade") + string='Season', ondelete='cascade') + zip_code = fields.Char(string='ZIP') city = fields.Char() country_id = fields.Many2one('res.country', string='Country') - member_ids = fields.Many2many('res.partner') + member_ids = fields.Many2many('res.partner', string='Members', + auto_join=True) diff --git a/golem_family_history/security/ir.model.access.csv b/golem_family_history/security/ir.model.access.csv new file mode 100644 index 0000000..759fb24 --- /dev/null +++ b/golem_family_history/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_golem_family_history_user,Access GOLEM Family History User,model_golem_family_history,golem_base.group_golem_user,1,1,1,1 diff --git a/golem_family_history/views/golem_family_views.xml b/golem_family_history/views/golem_family_views.xml index 7fd747d..eba3c11 100644 --- a/golem_family_history/views/golem_family_views.xml +++ b/golem_family_history/views/golem_family_views.xml @@ -20,6 +20,7 @@ along with this program. If not, see . + Golem Family form history adaptations @@ -32,6 +33,7 @@ along with this program. If not, see . + @@ -40,5 +42,6 @@ along with this program. If not, see . + diff --git a/golem_member_history/__manifest__.py b/golem_member_history/__manifest__.py index 2f66d83..ed47bb9 100644 --- a/golem_member_history/__manifest__.py +++ b/golem_member_history/__manifest__.py @@ -19,12 +19,12 @@ { 'name': 'GOLEM Member History', 'summary': 'Member History', - 'version': '10.0.0.0.1', + 'version': '10.0.0.1.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois, Youssef El ouahby', 'license': 'AGPL-3', 'application': False, 'installable': True, 'depends': ['golem_member', 'golem_pcs', 'golem_member_familyquotient'], - 'data': ['views/golem_member_views.xml'] + 'data': ['security/ir.model.access.csv', 'views/golem_member_views.xml'] } diff --git a/golem_member_history/i18n/fr.po b/golem_member_history/i18n/fr.po new file mode 100644 index 0000000..a3f3be1 --- /dev/null +++ b/golem_member_history/i18n/fr.po @@ -0,0 +1,148 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_member_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-26 06:41+0000\n" +"PO-Revision-Date: 2018-10-26 08:45+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" +"Plural-Forms: \n" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_area_id +msgid "Area" +msgstr "Territoire" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_city +msgid "City" +msgstr "Ville" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_currency_id +msgid "Currency" +msgstr "Devise" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_family_quotient +msgid "Family quotient" +msgstr "Quotient familial" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:37 +#: selection:golem.member.history,gender:0 +#, python-format +msgid "Female" +msgstr "Féminin" + +#. module: golem_member_history +#: model:ir.model,name:golem_member_history.model_golem_member +msgid "GOLEM Member" +msgstr "Adhérent" + +#. module: golem_member_history +#: model:ir.model,name:golem_member_history.model_golem_member_history +msgid "GOLEM Member History Management" +msgstr "GOLEM Member History Management" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_gender +msgid "Gender" +msgstr "Genre" + +#. module: golem_member_history +#: model:ir.ui.view,arch_db:golem_member_history.golem_member_form_inherit_golem_member_history +msgid "History" +msgstr "Historique" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_member_history_ids +msgid "History details" +msgstr "Historique" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_id +msgid "ID" +msgstr "ID" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history___last_update +msgid "Last Modified on" +msgstr "Dernière Modification le" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:37 +#: selection:golem.member.history,gender:0 +#, python-format +msgid "Male" +msgstr "Masculin" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_nationality_id +msgid "Nationality" +msgstr "Nationalité" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_pcs_id +msgid "PCS" +msgstr "PCS" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_season_id +msgid "Season" +msgstr "Saison" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_member_id +msgid "Service user" +msgstr "Usager" + +#. module: golem_member_history +#: model:ir.model.fields,help:golem_member_history.field_golem_member_history_currency_id +msgid "Utility field to express amount currency" +msgstr "Champ utile pour indiquer le montant de la monnaie" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:30 +#: sql_constraint:golem.member.history:0 +#, python-format +msgid "You can only have one history line for each member and season combination." +msgstr "Vous ne pouvez avoir qu'une seule ligne par usager par saison." + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_zip_code +msgid "ZIP" +msgstr "Code postal" + diff --git a/golem_member_history/i18n/golem_member_history.pot b/golem_member_history/i18n/golem_member_history.pot new file mode 100644 index 0000000..575c6ab --- /dev/null +++ b/golem_member_history/i18n/golem_member_history.pot @@ -0,0 +1,148 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_member_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-10-26 06:41+0000\n" +"PO-Revision-Date: 2018-10-26 06:41+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_area_id +msgid "Area" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_city +msgid "City" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_create_uid +msgid "Created by" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_create_date +msgid "Created on" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_currency_id +msgid "Currency" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_display_name +msgid "Display Name" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_family_quotient +msgid "Family quotient" +msgstr "" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:37 +#: selection:golem.member.history,gender:0 +#, python-format +msgid "Female" +msgstr "" + +#. module: golem_member_history +#: model:ir.model,name:golem_member_history.model_golem_member +msgid "GOLEM Member" +msgstr "" + +#. module: golem_member_history +#: model:ir.model,name:golem_member_history.model_golem_member_history +msgid "GOLEM Member History Management" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_gender +msgid "Gender" +msgstr "" + +#. module: golem_member_history +#: model:ir.ui.view,arch_db:golem_member_history.golem_member_form_inherit_golem_member_history +msgid "History" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_member_history_ids +msgid "History details" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_id +msgid "ID" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history___last_update +msgid "Last Modified on" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_write_date +msgid "Last Updated on" +msgstr "" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:37 +#: selection:golem.member.history,gender:0 +#, python-format +msgid "Male" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_nationality_id +msgid "Nationality" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_pcs_id +msgid "PCS" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_season_id +msgid "Season" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_member_id +msgid "Service user" +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,help:golem_member_history.field_golem_member_history_currency_id +msgid "Utility field to express amount currency" +msgstr "" + +#. module: golem_member_history +#: code:addons/golem_member_history/models/golem_member_history.py:30 +#: sql_constraint:golem.member.history:0 +#, python-format +msgid "You can only have one history line for each member and season combination." +msgstr "" + +#. module: golem_member_history +#: model:ir.model.fields,field_description:golem_member_history.field_golem_member_history_zip_code +msgid "ZIP" +msgstr "" + diff --git a/golem_member_history/models/golem_member.py b/golem_member_history/models/golem_member.py index 0c0448b..b4386ce 100644 --- a/golem_member_history/models/golem_member.py +++ b/golem_member_history/models/golem_member.py @@ -25,32 +25,28 @@ class GolemMember(models.Model): """ GOLEM Member adaptations """ _inherit = 'golem.member' - member_history_ids = fields.One2many('golem.member.history', 'member_id') + member_history_ids = fields.One2many('golem.member.history', 'member_id', + readonly=True, string='History details') - @api.constrains('gender', 'area_id', 'city', 'family_quotient', + @api.constrains('gender', 'area_id', 'zip', 'city', 'family_quotient', 'pcs_id', 'nationality_id', 'season_ids') def save_history(self): - """ save member history """ + """ Saves member history """ default_season = self.env['golem.season'].search([('is_default', '=', True)], limit=1) for member in self: - history = self.env['golem.member.history'].search([ + history_id = self.env['golem.member.history'].search([ ('member_id', '=', member.id), ('season_id', '=', default_season.id)], limit=1) - if history: - - history.write({'gender': member.gender, - 'nationality_id': member.nationality_id.id, - 'city': member.city, - 'family_quotient': member.family_quotient, - 'pcs_id': member.pcs_id.id, - 'area_id': member.area_id.id}) + history_data = {'gender': member.gender, + 'nationality_id': member.nationality_id.id, + 'zip_code': member.zip, + 'city': member.city, + 'family_quotient': member.family_quotient, + 'pcs_id': member.pcs_id.id, + 'area_id': member.area_id.id} + if history_id: + history_id.write(history_data) else: - self.env['golem.member.history'].create({'member_id': member.id, - 'season_id': default_season.id, - 'gender': member.gender, - 'nationality_id': member.nationality_id.id, - 'city': member.city, - 'family_quotient': member.family_quotient, - 'pcs_id': member.pcs_id.id, - 'area_id': member.area_id.id - }) + history_data.update({'member_id': member.id, + 'season_id': default_season.id}) + self.env['golem.member.history'].create(history_data) diff --git a/golem_member_history/models/golem_member_history.py b/golem_member_history/models/golem_member_history.py index 3443e04..f304a01 100644 --- a/golem_member_history/models/golem_member_history.py +++ b/golem_member_history/models/golem_member_history.py @@ -18,22 +18,30 @@ """ GOLEM Member History Management """ -from odoo import models, fields, api, _ +from odoo import models, fields, _ class GolemMemberHistory(models.Model): """ GOLEM Member History """ _name = 'golem.member.history' _description = 'GOLEM Member History Management' - _order = "season_id desc, id desc" + _order = 'season_id desc, id desc' + _sql_constraints = [('golem_member_history_member_season_uniq', + 'UNIQUE (member_id, season_id)', + _('You can only have one history line for each ' + 'member and season combination.'))] member_id = fields.Many2one('golem.member', required=True, auto_join=True, - ondelete="cascade") + string='Service user', ondelete='cascade') season_id = fields.Many2one('golem.season', required=True, auto_join=True, - ondelete="cascade") + string='Season', ondelete='cascade') gender = fields.Selection([('male', _('Male')), ('female', _('Female'))]) - area_id = fields.Many2one('golem.partner.area', string='Area', ondelete="cascade") + area_id = fields.Many2one('golem.partner.area', string='Area', + auto_join=True, ondelete='cascade') + zip_code = fields.Char(string='ZIP') city = fields.Char() family_quotient = fields.Monetary() - currency_id = fields.Many2one(related="member_id.currency_id", string="Currency", readonly=True) + currency_id = fields.Many2one(related='member_id.currency_id', + string='Currency', readonly=True) pcs_id = fields.Many2one('golem.pcs', string='PCS') - nationality_id = fields.Many2one('res.country', string="Nationality", ondelete="cascade") + nationality_id = fields.Many2one('res.country', string='Nationality', + auto_join=True, ondelete='cascade') diff --git a/golem_member_history/security/ir.model.access.csv b/golem_member_history/security/ir.model.access.csv new file mode 100644 index 0000000..0fff7e0 --- /dev/null +++ b/golem_member_history/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_golem_member_history_user,Access GOLEM Member History User,model_golem_member_history,golem_base.group_golem_user,1,1,1,1 diff --git a/golem_member_history/views/golem_member_views.xml b/golem_member_history/views/golem_member_views.xml index df88eb4..7f69fe3 100644 --- a/golem_member_history/views/golem_member_views.xml +++ b/golem_member_history/views/golem_member_views.xml @@ -1,7 +1,7 @@