From 317d3dbbba0d1728104b1e91c435d9fd8e4d0746 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Mon, 10 Nov 2014 13:03:50 +0100 Subject: [PATCH 1/6] [ADD] Module to split partner street name and street number --- partner_street_number/__init__.py | 1 + partner_street_number/__openerp__.py | 49 +++++++ partner_street_number/i18n/nl.po | 47 +++++++ .../i18n/partner_street_number.pot | 41 ++++++ .../migrations/0.1/post-migrate.py | 46 +++++++ partner_street_number/model/__init__.py | 1 + partner_street_number/model/res_partner.py | 124 ++++++++++++++++++ partner_street_number/view/res_partner.xml | 46 +++++++ 8 files changed, 355 insertions(+) create mode 100644 partner_street_number/__init__.py create mode 100644 partner_street_number/__openerp__.py create mode 100644 partner_street_number/i18n/nl.po create mode 100644 partner_street_number/i18n/partner_street_number.pot create mode 100644 partner_street_number/migrations/0.1/post-migrate.py create mode 100644 partner_street_number/model/__init__.py create mode 100644 partner_street_number/model/res_partner.py create mode 100644 partner_street_number/view/res_partner.xml diff --git a/partner_street_number/__init__.py b/partner_street_number/__init__.py new file mode 100644 index 000000000..9186ee3ad --- /dev/null +++ b/partner_street_number/__init__.py @@ -0,0 +1 @@ +from . import model diff --git a/partner_street_number/__openerp__.py b/partner_street_number/__openerp__.py new file mode 100644 index 000000000..b0ed6112b --- /dev/null +++ b/partner_street_number/__openerp__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013-2014 Therp BV (). +# +# 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 . +# +############################################################################## +{ + "name": "Split street name and number", + "version": "0.1", + "author": "Therp BV", + "category": 'Tools', + "description": """ +This module introduces separate fields for street name and street number. + +Changes to the OpenERP datamodel +================================ + +- Introduce two new fields for street name and number +- Keep 'Street' field as a function field to return street name + number +- Data written to the 'Street' field will be parsed into street name and number + if possible. This will be performed upon installation of the module for + existing partners. + +Compatibility +============= +This module is compatible with OpenERP 7.0. +""", + "depends": [ + 'base' + ], + "data": [ + 'view/res_partner.xml', + ], + 'installable': True, +} diff --git a/partner_street_number/i18n/nl.po b/partner_street_number/i18n/nl.po new file mode 100644 index 000000000..7380bc51f --- /dev/null +++ b/partner_street_number/i18n/nl.po @@ -0,0 +1,47 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * partner_street_number +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-12-07 13:50+0000\n" +"PO-Revision-Date: 2013-12-07 13:50+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: partner_street_number +#: field:res.partner,street_name:0 +msgid "Street name" +msgstr "Straatnaam" + +#. module: partner_street_number +#: field:res.partner,street_number:0 +msgid "Street number" +msgstr "Huisnummer" + +#. module: partner_street_number +#: view:res.partner:0 +msgid "Number..." +msgstr "Nummer..." + +#. module: partner_street_number +#: view:res.partner:0 +msgid "Street..." +msgstr "Straat..." + +#. module: partner_street_number +#: view:res.partner:0 +msgid "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}" +msgstr "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}" + +#. module: partner_street_number +#: model:ir.model,name:partner_street_number.model_res_partner +msgid "Partner" +msgstr "Relatie" + diff --git a/partner_street_number/i18n/partner_street_number.pot b/partner_street_number/i18n/partner_street_number.pot new file mode 100644 index 000000000..24dcda0df --- /dev/null +++ b/partner_street_number/i18n/partner_street_number.pot @@ -0,0 +1,41 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * partner_street_number +# +msgid "" +msgstr "" + +#. module: partner_street_number +#: field:res.partner,street_name:0 +msgid "Street name" +msgstr "" + +#. module: partner_street_number +#: field:res.partner,street_number:0 +msgid "Street number" +msgstr "" + +#. module: partner_street_number +#: view:res.partner:0 +msgid "Number..." +msgstr "" + +#. module: partner_street_number +#: view:res.partner:0 +msgid "Street..." +msgstr "" + +#. module: partner_street_number +#: view:res.partner:0 +msgid "" +"{'default_parent_id': active_id, 'default_street_name': street_name, " +"'default_street_number': street_number, 'default_street2': street2, " +"'default_city': city, 'default_state_id': state_id, 'default_zip': zip, " +"'default_country_id': country_id, 'default_supplier': supplier, " +"'default_customer': customer}" +msgstr "" + +#. module: partner_street_number +#: model:ir.model,name:partner_street_number.model_res_partner +msgid "Partner" +msgstr "" diff --git a/partner_street_number/migrations/0.1/post-migrate.py b/partner_street_number/migrations/0.1/post-migrate.py new file mode 100644 index 000000000..5c7cc0de3 --- /dev/null +++ b/partner_street_number/migrations/0.1/post-migrate.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013-2014 Therp BV (). +# +# @autors: Stefan Rijnhart, Ronald Portier +# +# 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 . +# +############################################################################## +import logging +from openerp import pooler, SUPERUSER_ID + + +def migrate(cr, version): + """ + Post-install script. If version is not set, we are called at installation + time. Because 'street' is now a stored function field, we should be able + to retrieve its values from the cursor. We use those to fill the new + name/number fields using the street field's inverse function, which does + a basic street name/number split. + """ + if version: + return + logging.getLogger('openerp.addons.partner_street_number').info( + 'Migrating existing street names') + cr.execute( + 'SELECT id, street FROM res_partner ' + 'WHERE street IS NOT NULL and street_name IS NULL' + ) + partner_obj = pooler.get_pool(cr.dbname)['res.partner'] + for partner in cr.fetchall(): + partner_obj.write( + cr, SUPERUSER_ID, partner[0], {'street': partner[1]}) diff --git a/partner_street_number/model/__init__.py b/partner_street_number/model/__init__.py new file mode 100644 index 000000000..91fed54d4 --- /dev/null +++ b/partner_street_number/model/__init__.py @@ -0,0 +1 @@ +from . import res_partner diff --git a/partner_street_number/model/res_partner.py b/partner_street_number/model/res_partner.py new file mode 100644 index 000000000..1d50cf682 --- /dev/null +++ b/partner_street_number/model/res_partner.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013-2014 Therp BV (). +# +# @autors: Stefan Rijnhart, Ronald Portier +# +# 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 . +# +############################################################################## + +import re +from openerp.osv import orm, fields + + +class ResPartner(orm.Model): + _inherit = 'res.partner' + + def get_street(self, cr, uid, partner, context=None): + """ + Allow to override the field function's value composition + + :param partner: res.partner browse record + :rtype: string + """ + return ' '.join(filter(None, [ + partner.street_name, + partner.street_number, + ])) + + def _get_street(self, cr, uid, select, field_name, args, context=None): + """ Delegates the function field 'street' to an inheritable method""" + res = {} + for partner in self.browse(cr, uid, select, context=context): + res[partner.id] = self.get_street( + cr, uid, partner, context=context) + return res + + def _write_street(self, cr, uid, ids, name, value, arg, context=None): + """ + Simplistically try to parse in case a value should get written + to the 'street' field (for instance at import time, which provides + us with a way of easily restoring the data when this module is + installed on a database that already contains addresses). + """ + street_name = value and value.strip() or False + street_number = False + if value: + match = re.search('(.+)\s+(\d.*)', value.strip()) + if match and len(match.group(2)) < 6: + street_name = match.group(1) + street_number = match.group(2) + return self.write(cr, uid, ids, { + 'street_name': street_name, + 'street_number': street_number, + }, context=context) + + def _display_address( + self, cr, uid, address, without_company=False, context=None): + """ + Inject a context key to prevent the 'street' name to be + deleted from the result of _address_fields when called from + the super. + """ + local_context = dict(context or {}, display_address=True) + return super(ResPartner, self)._display_address( + cr, uid, address, without_company=without_company, + context=local_context) + + def _address_fields(self, cr, uid, context=None): + """ + Pass on the fields for address synchronisation to contacts. + + This method is used on at least two occassions: + + [1] when address fields are synced to contacts, and + [2] when addresses are formatted + + We want to prevent the 'street' field to be passed in the + first case, as it has a fallback write method which should + not be triggered in this case, while leaving the field in + in the second case. Therefore, we remove the field + name from the list of address fields unless we find the context + key that this module injects when formatting an address. + + Could have checked for the occurrence of the synchronisation + method instead, leaving the field in by default but that could + lead to silent data corruption should the synchronisation API + ever change. + """ + res = super(ResPartner, self)._address_fields(cr, uid, context=context) + if 'street' in res and not ( + context and context.get('display_address')): + res.remove('street') + return res + ['street_name', 'street_number'] + + _columns = { + 'street_name': fields.char( + 'Street name', size=118), + 'street_number': fields.char( + 'Street number', size=10), + 'street': fields.function( + _get_street, fnct_inv=_write_street, + type='char', string="Street", + # Must be stored as per https://bugs.launchpad.net/bugs/1253200 + store={ + 'res.partner': ( + lambda self, cr, uid, ids, context=None: ids, + ['street_name', 'street_number'], 10), + }, + ), + } diff --git a/partner_street_number/view/res_partner.xml b/partner_street_number/view/res_partner.xml new file mode 100644 index 000000000..487619b96 --- /dev/null +++ b/partner_street_number/view/res_partner.xml @@ -0,0 +1,46 @@ + + + + + + Add separate fields for street name and number + res.partner + + + + +
+ + +
+
+ + +
+ + +
+
+ + + {'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer} + + +
+
+
+
From ac79f676c64265aaad4cc9215f51cf4ab9fb76b2 Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Fri, 21 Nov 2014 09:16:52 +0100 Subject: [PATCH 2/6] use raw string for regexp --- partner_street_number/model/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partner_street_number/model/res_partner.py b/partner_street_number/model/res_partner.py index 1d50cf682..5788e554c 100644 --- a/partner_street_number/model/res_partner.py +++ b/partner_street_number/model/res_partner.py @@ -58,7 +58,7 @@ class ResPartner(orm.Model): street_name = value and value.strip() or False street_number = False if value: - match = re.search('(.+)\s+(\d.*)', value.strip()) + match = re.search(r'(.+)\s+(\d.*)', value.strip()) if match and len(match.group(2)) < 6: street_name = match.group(1) street_number = match.group(2) From 9979ef13b81dde243ba7a28a9de1159eeba5d8bb Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Thu, 12 Mar 2015 17:17:00 +0100 Subject: [PATCH 3/6] Add OCA as author of OCA addons In order to get visibility on https://www.odoo.com/apps the OCA board has decided to add the OCA as author of all the addons maintained as part of the association. --- partner_street_number/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partner_street_number/__openerp__.py b/partner_street_number/__openerp__.py index b0ed6112b..bd02d22dd 100644 --- a/partner_street_number/__openerp__.py +++ b/partner_street_number/__openerp__.py @@ -21,7 +21,7 @@ { "name": "Split street name and number", "version": "0.1", - "author": "Therp BV", + "author": "Therp BV,Odoo Community Association (OCA)", "category": 'Tools', "description": """ This module introduces separate fields for street name and street number. From 187ebf0562e93aeda11c53175618a80adf4ab69c Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Thu, 12 Mar 2015 23:43:17 +0100 Subject: [PATCH 4/6] [PRT] partner_street_number 8.0 --- partner_street_number/README.rst | 48 ++++++++++ partner_street_number/__init__.py | 44 ++++++++- partner_street_number/__openerp__.py | 28 ++---- partner_street_number/i18n/nl.po | 39 ++++---- .../i18n/partner_street_number.pot | 43 +++++---- .../migrations/0.1/post-migrate.py | 46 --------- .../{model => models}/__init__.py | 0 .../{model => models}/res_partner.py | 87 ++++++------------ .../static/description/icon.png | Bin 0 -> 12361 bytes .../{view => views}/res_partner.xml | 4 +- 10 files changed, 173 insertions(+), 166 deletions(-) create mode 100644 partner_street_number/README.rst delete mode 100644 partner_street_number/migrations/0.1/post-migrate.py rename partner_street_number/{model => models}/__init__.py (100%) rename partner_street_number/{model => models}/res_partner.py (51%) create mode 100644 partner_street_number/static/description/icon.png rename partner_street_number/{view => views}/res_partner.xml (90%) diff --git a/partner_street_number/README.rst b/partner_street_number/README.rst new file mode 100644 index 000000000..bb9029511 --- /dev/null +++ b/partner_street_number/README.rst @@ -0,0 +1,48 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License + +Split street name and number +============================ + +This module introduces separate fields for street name and street number. + +Changes to the Odoo datamodel +============================= +- Introduce two new fields for street name and number +- Keep 'Street' field as a function field to return street name + number +- Data written to the 'Street' field will be parsed into street name and number + if possible. This will be performed upon installation of the module for + existing partners. + +Compatibility +============= +This module is compatible with OpenERP 8.0. + + +Installation +============ + +Upon installation, the module will do a simple migration of existing values in +the street column to split up the street name and number. + +Credits +======= + +Contributors +------------ + +* Stefan Rijnhart +* Ronald Portier + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/partner_street_number/__init__.py b/partner_street_number/__init__.py index 9186ee3ad..55fd67147 100644 --- a/partner_street_number/__init__.py +++ b/partner_street_number/__init__.py @@ -1 +1,43 @@ -from . import model +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, an open source suite of business apps +# This module copyright (C) 2013-2015 Therp BV (). +# +# 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 . +# +############################################################################## +from . import models + +import logging +from openerp import SUPERUSER_ID + + +def post_init_hook(cr, registry): + """ + Post-install script. Because 'street' is now a stored function field, we + should be able to retrieve its values from the cursor. We use those to + fill the new name/number fields using the street field's inverse function, + which does a basic street name/number split. + """ + logging.getLogger('openerp.addons.partner_street_number').info( + 'Migrating existing street names') + cr.execute( + 'SELECT id, street FROM res_partner ' + 'WHERE street IS NOT NULL and street_name IS NULL' + ) + partner_obj = registry['res.partner'] + for partner in cr.fetchall(): + partner_obj.write( + cr, SUPERUSER_ID, partner[0], {'street': partner[1]}) diff --git a/partner_street_number/__openerp__.py b/partner_street_number/__openerp__.py index bd02d22dd..b3435c100 100644 --- a/partner_street_number/__openerp__.py +++ b/partner_street_number/__openerp__.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# This module copyright (C) 2013-2014 Therp BV (). +# Odoo, an open source suite of business apps +# This module copyright (C) 2013-2015 Therp BV (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -19,31 +19,19 @@ # ############################################################################## { - "name": "Split street name and number", + "name": "Street name and number", + "summary": "Introduces separate fields for street name and street number.", "version": "0.1", "author": "Therp BV,Odoo Community Association (OCA)", + "website": "https://github.com/oca/partner-contact", "category": 'Tools', - "description": """ -This module introduces separate fields for street name and street number. - -Changes to the OpenERP datamodel -================================ - -- Introduce two new fields for street name and number -- Keep 'Street' field as a function field to return street name + number -- Data written to the 'Street' field will be parsed into street name and number - if possible. This will be performed upon installation of the module for - existing partners. - -Compatibility -============= -This module is compatible with OpenERP 7.0. -""", "depends": [ 'base' ], "data": [ - 'view/res_partner.xml', + 'views/res_partner.xml', ], 'installable': True, + 'license': 'AGPL-3', + 'post_init_hook': 'post_init_hook', } diff --git a/partner_street_number/i18n/nl.po b/partner_street_number/i18n/nl.po index 7380bc51f..0cb2df6a1 100644 --- a/partner_street_number/i18n/nl.po +++ b/partner_street_number/i18n/nl.po @@ -1,13 +1,13 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * partner_street_number +# * partner_street_number # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" +"Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-07 13:50+0000\n" -"PO-Revision-Date: 2013-12-07 13:50+0000\n" +"POT-Creation-Date: 2015-03-12 22:26+0000\n" +"PO-Revision-Date: 2015-03-12 22:26+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,16 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: partner_street_number +#: view:res.partner:partner_street_number.view_partner_form +msgid "Number..." +msgstr "Nummer..." + +#. module: partner_street_number +#: model:ir.model,name:partner_street_number.model_res_partner +msgid "Partner" +msgstr "Relatie" + #. module: partner_street_number #: field:res.partner,street_name:0 msgid "Street name" @@ -26,22 +36,11 @@ msgid "Street number" msgstr "Huisnummer" #. module: partner_street_number -#: view:res.partner:0 -msgid "Number..." -msgstr "Nummer..." - -#. module: partner_street_number -#: view:res.partner:0 +#: view:res.partner:partner_street_number.view_partner_form msgid "Street..." msgstr "Straat..." #. module: partner_street_number -#: view:res.partner:0 -msgid "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}" -msgstr "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}" - -#. module: partner_street_number -#: model:ir.model,name:partner_street_number.model_res_partner -msgid "Partner" -msgstr "Relatie" - +#: view:res.partner:partner_street_number.view_partner_form +msgid "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_use_parent_address': True}" +msgstr "" diff --git a/partner_street_number/i18n/partner_street_number.pot b/partner_street_number/i18n/partner_street_number.pot index 24dcda0df..8a8554a89 100644 --- a/partner_street_number/i18n/partner_street_number.pot +++ b/partner_street_number/i18n/partner_street_number.pot @@ -1,41 +1,46 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * partner_street_number +# * partner_street_number # msgid "" msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-03-12 22:26+0000\n" +"PO-Revision-Date: 2015-03-12 22:26+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: partner_street_number -#: field:res.partner,street_name:0 -msgid "Street name" +#: view:res.partner:partner_street_number.view_partner_form +msgid "Number..." msgstr "" #. module: partner_street_number -#: field:res.partner,street_number:0 -msgid "Street number" +#: model:ir.model,name:partner_street_number.model_res_partner +msgid "Partner" msgstr "" #. module: partner_street_number -#: view:res.partner:0 -msgid "Number..." +#: field:res.partner,street_name:0 +msgid "Street name" msgstr "" #. module: partner_street_number -#: view:res.partner:0 -msgid "Street..." +#: field:res.partner,street_number:0 +msgid "Street number" msgstr "" #. module: partner_street_number -#: view:res.partner:0 -msgid "" -"{'default_parent_id': active_id, 'default_street_name': street_name, " -"'default_street_number': street_number, 'default_street2': street2, " -"'default_city': city, 'default_state_id': state_id, 'default_zip': zip, " -"'default_country_id': country_id, 'default_supplier': supplier, " -"'default_customer': customer}" +#: view:res.partner:partner_street_number.view_partner_form +msgid "Street..." msgstr "" #. module: partner_street_number -#: model:ir.model,name:partner_street_number.model_res_partner -msgid "Partner" +#: view:res.partner:partner_street_number.view_partner_form +msgid "{'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_use_parent_address': True}" msgstr "" diff --git a/partner_street_number/migrations/0.1/post-migrate.py b/partner_street_number/migrations/0.1/post-migrate.py deleted file mode 100644 index 5c7cc0de3..000000000 --- a/partner_street_number/migrations/0.1/post-migrate.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This module copyright (C) 2013-2014 Therp BV (). -# -# @autors: Stefan Rijnhart, Ronald Portier -# -# 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 . -# -############################################################################## -import logging -from openerp import pooler, SUPERUSER_ID - - -def migrate(cr, version): - """ - Post-install script. If version is not set, we are called at installation - time. Because 'street' is now a stored function field, we should be able - to retrieve its values from the cursor. We use those to fill the new - name/number fields using the street field's inverse function, which does - a basic street name/number split. - """ - if version: - return - logging.getLogger('openerp.addons.partner_street_number').info( - 'Migrating existing street names') - cr.execute( - 'SELECT id, street FROM res_partner ' - 'WHERE street IS NOT NULL and street_name IS NULL' - ) - partner_obj = pooler.get_pool(cr.dbname)['res.partner'] - for partner in cr.fetchall(): - partner_obj.write( - cr, SUPERUSER_ID, partner[0], {'street': partner[1]}) diff --git a/partner_street_number/model/__init__.py b/partner_street_number/models/__init__.py similarity index 100% rename from partner_street_number/model/__init__.py rename to partner_street_number/models/__init__.py diff --git a/partner_street_number/model/res_partner.py b/partner_street_number/models/res_partner.py similarity index 51% rename from partner_street_number/model/res_partner.py rename to partner_street_number/models/res_partner.py index 5788e554c..b28f44d2a 100644 --- a/partner_street_number/model/res_partner.py +++ b/partner_street_number/models/res_partner.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# This module copyright (C) 2013-2014 Therp BV (). +# Odoo, an open source suite of business apps +# This module copyright (C) 2013-2015 Therp BV (). # -# @autors: Stefan Rijnhart, Ronald Portier +# @authors: Stefan Rijnhart, Ronald Portier # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -22,64 +22,48 @@ ############################################################################## import re -from openerp.osv import orm, fields +from openerp import models, fields, api -class ResPartner(orm.Model): +class ResPartner(models.Model): _inherit = 'res.partner' - def get_street(self, cr, uid, partner, context=None): - """ - Allow to override the field function's value composition - - :param partner: res.partner browse record - :rtype: string - """ - return ' '.join(filter(None, [ - partner.street_name, - partner.street_number, - ])) - - def _get_street(self, cr, uid, select, field_name, args, context=None): - """ Delegates the function field 'street' to an inheritable method""" - res = {} - for partner in self.browse(cr, uid, select, context=context): - res[partner.id] = self.get_street( - cr, uid, partner, context=context) - return res + @api.one + @api.depends('street_name', 'street_number') + def _get_street(self): + self.street = ' '.join( + filter(None, [self.street_name, self.street_number])) - def _write_street(self, cr, uid, ids, name, value, arg, context=None): + def _write_street(self): """ Simplistically try to parse in case a value should get written to the 'street' field (for instance at import time, which provides us with a way of easily restoring the data when this module is installed on a database that already contains addresses). """ - street_name = value and value.strip() or False + street_name = self.street and self.street.strip() or False street_number = False - if value: - match = re.search(r'(.+)\s+(\d.*)', value.strip()) + if self.street: + match = re.search(r'(.+)\s+(\d.*)', self.street.strip()) if match and len(match.group(2)) < 6: street_name = match.group(1) street_number = match.group(2) - return self.write(cr, uid, ids, { - 'street_name': street_name, - 'street_number': street_number, - }, context=context) + for partner in self: + self.street_name = street_name + self.street_number = street_number - def _display_address( - self, cr, uid, address, without_company=False, context=None): + @api.model + def _display_address(self, address, without_company=False): """ Inject a context key to prevent the 'street' name to be deleted from the result of _address_fields when called from the super. """ - local_context = dict(context or {}, display_address=True) - return super(ResPartner, self)._display_address( - cr, uid, address, without_company=without_company, - context=local_context) + return super(ResPartner, self.with_context(display_address=True)).\ + _display_address(address, without_company=without_company) - def _address_fields(self, cr, uid, context=None): + @api.model + def _address_fields(self): """ Pass on the fields for address synchronisation to contacts. @@ -100,25 +84,14 @@ class ResPartner(orm.Model): lead to silent data corruption should the synchronisation API ever change. """ - res = super(ResPartner, self)._address_fields(cr, uid, context=context) + res = super(ResPartner, self)._address_fields() if 'street' in res and not ( - context and context.get('display_address')): + self._context.get('display_address')): res.remove('street') return res + ['street_name', 'street_number'] - _columns = { - 'street_name': fields.char( - 'Street name', size=118), - 'street_number': fields.char( - 'Street number', size=10), - 'street': fields.function( - _get_street, fnct_inv=_write_street, - type='char', string="Street", - # Must be stored as per https://bugs.launchpad.net/bugs/1253200 - store={ - 'res.partner': ( - lambda self, cr, uid, ids, context=None: ids, - ['street_name', 'street_number'], 10), - }, - ), - } + street_name = fields.Char('Street name') + street_number = fields.Char('Street number') + # Must be stored as per https://bugs.launchpad.net/bugs/1253200 + street = fields.Char( + compute='_get_street', store=True, inverse='_write_street') diff --git a/partner_street_number/static/description/icon.png b/partner_street_number/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8e1ad59d7db69e97b2467c6fb0d4e3e460c9b4 GIT binary patch literal 12361 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 YID`P*yI)_SqJKa}LQ%X*)WH9L08=sy2LJ#7 literal 0 HcmV?d00001 diff --git a/partner_street_number/view/res_partner.xml b/partner_street_number/views/res_partner.xml similarity index 90% rename from partner_street_number/view/res_partner.xml rename to partner_street_number/views/res_partner.xml index 487619b96..6f642964f 100644 --- a/partner_street_number/view/res_partner.xml +++ b/partner_street_number/views/res_partner.xml @@ -27,17 +27,15 @@
- {'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer} + {'default_parent_id': active_id, 'default_street_name': street_name, 'default_street_number': street_number, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_use_parent_address': True} From f70b2c790629aa91492bc4272b8aee1b6cdd2c92 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 3 Apr 2015 21:25:04 +0200 Subject: [PATCH 5/6] [IMP] partner_street_number: Icon --- partner_street_number/README.rst | 5 + .../static/description/icon.png | Bin 12361 -> 8160 bytes .../static/description/icon.svg | 301 ++++++++++++++++++ 3 files changed, 306 insertions(+) create mode 100644 partner_street_number/static/description/icon.svg diff --git a/partner_street_number/README.rst b/partner_street_number/README.rst index bb9029511..e737c8173 100644 --- a/partner_street_number/README.rst +++ b/partner_street_number/README.rst @@ -34,6 +34,11 @@ Contributors * Stefan Rijnhart * Ronald Portier +Icon +---- + +* Based on https://openclipart.org/detail/149575/brass-plaques-tags. + Maintainer ---------- diff --git a/partner_street_number/static/description/icon.png b/partner_street_number/static/description/icon.png index 2c8e1ad59d7db69e97b2467c6fb0d4e3e460c9b4..d72dfde5c8f9d1b9a637fddb3f194262af9279b7 100644 GIT binary patch literal 8160 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 literal 12361 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 YID`P*yI)_SqJKa}LQ%X*)WH9L08=sy2LJ#7 diff --git a/partner_street_number/static/description/icon.svg b/partner_street_number/static/description/icon.svg new file mode 100644 index 000000000..059bd0e60 --- /dev/null +++ b/partner_street_number/static/description/icon.svg @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + Brass plaques, tags + 2011-07-14T01:26:24 + Part of this is a digital picture of some brass foil, then I added vector edges. The other two are all vector. + https://openclipart.org/detail/149575/brass-plaques-tags-by-raker-tooth + + + Raker Tooth + + + + + Brass plaques + brass tags + gold look + metal effects + name tags + + + + + + + + + + + From 5a85671ef90ef07e4cbe4b0bb8db66648e0d8f1b Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Fri, 3 Apr 2015 21:36:46 +0200 Subject: [PATCH 6/6] [UPD] Contributors --- partner_street_number/README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/partner_street_number/README.rst b/partner_street_number/README.rst index e737c8173..684f943a9 100644 --- a/partner_street_number/README.rst +++ b/partner_street_number/README.rst @@ -33,6 +33,7 @@ Contributors * Stefan Rijnhart * Ronald Portier +* Pedro M. Baeza Icon ----