From b09dc2102804eccf7e58b3dbfb681256220bc2f1 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Wed, 20 Jun 2018 23:02:32 +0200 Subject: [PATCH] [ADD] Split firstname feature in a new module and change the name of the field to fit the community module with the same name. This module will shadow partner_firstname and thus remove the cheesy feature --- partner_firstname/__init__.py | 2 + partner_firstname/__openerp__.py | 24 +++++++++++ partner_firstname/models/__init__.py | 1 + partner_firstname/models/partner.py | 53 +++++++++++++++++++++++++ partner_firstname/views/res_partner.xml | 17 ++++++++ 5 files changed, 97 insertions(+) create mode 100644 partner_firstname/__init__.py create mode 100644 partner_firstname/__openerp__.py create mode 100644 partner_firstname/models/__init__.py create mode 100644 partner_firstname/models/partner.py create mode 100644 partner_firstname/views/res_partner.xml diff --git a/partner_firstname/__init__.py b/partner_firstname/__init__.py new file mode 100644 index 0000000..89d26e2 --- /dev/null +++ b/partner_firstname/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +import models diff --git a/partner_firstname/__openerp__.py b/partner_firstname/__openerp__.py new file mode 100644 index 0000000..c875990 --- /dev/null +++ b/partner_firstname/__openerp__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Beescoop Base Module", + + 'summary': """ + Module that simply add a firstname on the module res.partner + replace the community module from the same name for the beescoop + """, + + 'description': """ + """, + + 'author': "Beescoop - Cellule IT", + 'website': "https://github.com/beescoop/Obeesdoo", + + 'category': 'Contact', + 'version': '1.0', + + 'depends': ['base'], + + 'data': [ + 'views/res_partner.xml', + ], +} diff --git a/partner_firstname/models/__init__.py b/partner_firstname/models/__init__.py new file mode 100644 index 0000000..0f63679 --- /dev/null +++ b/partner_firstname/models/__init__.py @@ -0,0 +1 @@ +import partner diff --git a/partner_firstname/models/partner.py b/partner_firstname/models/partner.py new file mode 100644 index 0000000..d5498f3 --- /dev/null +++ b/partner_firstname/models/partner.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError + +def concat_names(*args): + """ + Concatenate only args that are not empty + @param args: a list of string + """ + return ' '.join(filter(bool, args)) + +class Partner(models.Model): + + _inherit = 'res.partner' + + firstname = fields.Char('First Name') + lastname = fields.Char('Last Name', required=True, default="/") + name = fields.Char(compute='_get_name', inverse='_set_name', store=True) + + @api.depends('firstname', 'lastname') + def _get_name(self): + for rec in self: + rec.name = concat_names(rec.firstname, rec.lastname) + + def _set_name(self): + """ + This allow to handle the case of code that write directly on the name at creation + Should never happen but in case it happen write on the lastname + If there is no firstname lastname and name are the same + """ + for rec in self: + if not rec.firstname: + rec.lastname = rec.name + + + def _compatibility_layer(self, vals): + if 'last_name' in vals: + if not 'lastname' in vals: + vals['lastname'] = vals['last_name'] + vals.pop('last_name') + if 'first_name' in vals: + if not 'firstname' in vals: + vals['firstname'] = vals['first_name'] + vals.pop('first_name') + return vals + + @api.multi + def write(self, vals): + return super(Partner, self).write(self._compatibility_layer(vals)) + + @api.model + def create(self, vals): + return super(Partner, self).create(self._compatibility_layer(vals)) diff --git a/partner_firstname/views/res_partner.xml b/partner_firstname/views/res_partner.xml new file mode 100644 index 0000000..01e48b8 --- /dev/null +++ b/partner_firstname/views/res_partner.xml @@ -0,0 +1,17 @@ + + + beesdoo.partner.form.view + res.partner + + + + + + + + + +