From 8676d5f8a6171576a363dda23a28e1aaa58d6d78 Mon Sep 17 00:00:00 2001 From: David Vidal Date: Wed, 31 May 2017 18:55:33 +0200 Subject: [PATCH] [MIG] base_location_nuts: Migration to 10.0 --- base_location_nuts/README.rst | 20 +- base_location_nuts/__init__.py | 3 - base_location_nuts/__manifest__.py | 35 +-- base_location_nuts/i18n/de.po | 213 ++++++++++++++++ base_location_nuts/i18n/es.po | 2 +- base_location_nuts/i18n/fi.po | 212 ++++++++++++++++ base_location_nuts/i18n/it.po | 237 ++++++++++++++++++ base_location_nuts/i18n/sl.po | 213 ++++++++++++++++ base_location_nuts/models/__init__.py | 11 +- base_location_nuts/models/res_country.py | 8 +- base_location_nuts/models/res_partner.py | 66 +++-- base_location_nuts/models/res_partner_nuts.py | 29 ++- base_location_nuts/tests/__init__.py | 3 + .../tests/test_base_location_nuts.py | 90 +++++++ base_location_nuts/views/res_country_view.xml | 10 +- .../views/res_partner_nuts_view.xml | 11 +- base_location_nuts/views/res_partner_view.xml | 11 +- base_location_nuts/wizard/__init__.py | 3 - base_location_nuts/wizard/nuts_import.py | 56 +++-- .../wizard/nuts_import_view.xml | 11 +- 20 files changed, 1080 insertions(+), 164 deletions(-) create mode 100644 base_location_nuts/i18n/de.po create mode 100644 base_location_nuts/i18n/fi.po create mode 100644 base_location_nuts/i18n/it.po create mode 100644 base_location_nuts/i18n/sl.po create mode 100644 base_location_nuts/tests/__init__.py create mode 100644 base_location_nuts/tests/test_base_location_nuts.py diff --git a/base_location_nuts/README.rst b/base_location_nuts/README.rst index 39c4c3545..38104a5e1 100644 --- a/base_location_nuts/README.rst +++ b/base_location_nuts/README.rst @@ -48,16 +48,15 @@ in order to allow to assign them to partner object. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/134/8.0 + :target: https://runbot.odoo-community.org/runbot/134/10.0 Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. Credits ======= @@ -65,9 +64,10 @@ Credits Contributors ------------ -* Rafael Blasco -* Antonio Espinosa -* Jairo Llopis +* Rafael Blasco +* Antonio Espinosa +* Jairo Llopis +* David Vidal Maintainer ---------- @@ -82,4 +82,4 @@ 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. +To contribute to this module, please visit https://odoo-community.org. diff --git a/base_location_nuts/__init__.py b/base_location_nuts/__init__.py index 7333c0440..35e7c9600 100644 --- a/base_location_nuts/__init__.py +++ b/base_location_nuts/__init__.py @@ -1,7 +1,4 @@ # -*- coding: utf-8 -*- -############################################################################## -# For copyright and license notices, see __openerp__.py file in root directory -############################################################################## from . import models from . import wizard diff --git a/base_location_nuts/__manifest__.py b/base_location_nuts/__manifest__.py index 6c0b63cb4..1396bf520 100644 --- a/base_location_nuts/__manifest__.py +++ b/base_location_nuts/__manifest__.py @@ -1,32 +1,15 @@ # -*- coding: utf-8 -*- -# Python source code encoding : https://www.python.org/dev/peps/pep-0263/ -############################################################################## -# -# OpenERP, Odoo Source Management Solution -# Copyright (c) 2015 Antiun Ingeniería S.L. (http://www.antiun.com) -# Antonio Espinosa -# -# 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 . -# -############################################################################## +# Copyright 2015 Antonio Espinosa +# Copyright 2016 Jairo Llopis +# Copyright 2017 David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { 'name': 'NUTS Regions', 'category': 'Localisation/Europe', - 'version': '8.0.2.0.0', + 'version': '10.0.1.0.0', 'depends': [ - 'base', + 'sales_team', ], 'data': [ 'views/res_country_view.xml', @@ -38,9 +21,9 @@ 'images': [ 'images/new_fields.png', ], - 'author': 'Antiun Ingeniería S.L., ' + 'author': 'Tecnativa, ' 'Odoo Community Association (OCA)', - 'website': 'http://www.antiun.com', + 'website': 'https://www.tecnativa.com', 'license': 'AGPL-3', - 'installable': False, + 'installable': True, } diff --git a/base_location_nuts/i18n/de.po b/base_location_nuts/i18n/de.po new file mode 100644 index 000000000..338a35b6d --- /dev/null +++ b/base_location_nuts/i18n/de.po @@ -0,0 +1,213 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_location_nuts +# +# Translators: +# Rudolf Schnapka , 2015 +msgid "" +msgstr "" +"Project-Id-Version: partner-contact (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-25 01:50+0000\n" +"PO-Revision-Date: 2015-11-25 11:07+0000\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: German (https://www.transifex.com/oca/OCA-partner-contact-8-0/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Cancel" +msgstr "abbrechen" + +#. module: base_location_nuts +#: field:res.partner.nuts,children:0 +msgid "Children" +msgstr "Untergeordnete" + +#. module: base_location_nuts +#: field:res.partner.nuts,code:0 +msgid "Code" +msgstr "Schlüssel" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,country_id:0 +msgid "Country" +msgstr "Land" + +#. module: base_location_nuts +#: field:nuts.import,create_uid:0 field:res.partner.nuts,create_uid:0 +msgid "Created by" +msgstr "erstellt von" + +#. module: base_location_nuts +#: field:nuts.import,create_date:0 field:res.partner.nuts,create_date:0 +msgid "Created on" +msgstr "erstellt am" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:130 +#, python-format +msgid "Downloaded file is not a valid XML file" +msgstr "Heruntergeladene Datei scheint keine gültige XML-Datei zu sein" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:122 +#, python-format +msgid "Got an error %d when trying to download the file %s." +msgstr "Erhielt einen Fehler %d beim Versuch die Datei %s herunter zu laden." + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:118 +#, python-format +msgid "Got an error when trying to download the file: %s." +msgstr "Erhielt einen Fehler beim Versuch die Datei %s herunterzuladen." + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Group By" +msgstr "Gruppieren" + +#. module: base_location_nuts +#: field:nuts.import,id:0 field:res.partner.nuts,id:0 +msgid "ID" +msgstr "ID" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import" +msgstr "Import" + +#. module: base_location_nuts +#: model:ir.ui.menu,name:base_location_nuts.nuts_import_menu +msgid "Import NUTS 2013" +msgstr "Importiere NUTS 2013" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.nuts_import_action +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import NUTS 2013 from RAMON" +msgstr "Importiere NUTS 2013 von RAMON" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_nuts_import +msgid "Import NUTS items from European RAMON service" +msgstr "Importiere NUTS-Elemente vom Europäischen RAMON-Dienst" + +#. module: base_location_nuts +#: field:nuts.import,write_uid:0 field:res.partner.nuts,write_uid:0 +msgid "Last Updated by" +msgstr "zuletzt aktualisiert von" + +#. module: base_location_nuts +#: field:nuts.import,write_date:0 field:res.partner.nuts,write_date:0 +msgid "Last Updated on" +msgstr "zuletzt aktualisiert am" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,level:0 +msgid "Level" +msgstr "Stufe" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner_nuts +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_form +msgid "NUTS Item" +msgstr "NUTS-Element" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.res_partner_nuts_action +#: model:ir.ui.menu,name:base_location_nuts.res_partner_nuts_menu +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_tree +msgid "NUTS Items" +msgstr "NUTS-Elemente" + +#. module: base_location_nuts +#: field:res.partner.nuts,name:0 +msgid "Name" +msgstr "Name" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_left:0 +msgid "Parent Left" +msgstr "Übergeordnet links" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_right:0 +msgid "Parent Right" +msgstr "Übergeordnet rechts" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_id:0 +msgid "Parent id" +msgstr "Übergeordnet-ID" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:34 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,region:0 +#, python-format +msgid "Region" +msgstr "Region" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +msgid "Salesperson" +msgstr "Verkäufer" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Search NUTS" +msgstr "Suche in NUTS" + +#. module: base_location_nuts +#: field:res.partner.nuts,state_id:0 +msgid "State" +msgstr "Bundesland" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:35 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,substate:0 +#, python-format +msgid "Substate" +msgstr "Unterstatus" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "" +"This wizard will download the lastest version of\n" +" NUTS 2013 from Europe RAMON metadata service.\n" +" Updating or creating new NUTS entries if not\n" +" found already in the system, and DELETING MISSING\n" +" ENTRIES from new downloaded file." +msgstr "Dieser Assisten lädt die neueste Version des NUTS vom Europäischen RAMON Metadatendienst herunter. NUTS-Einträge werden aktualisiert oder angelegt, wenn sie nicht bereits im System vorhanden sind und werden GELÖSCHT, wenn sie in der neuen Datei fehlen." + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:97 +#, python-format +msgid "Value not found for mandatory field %s" +msgstr "Wert für Pflichtfeld %s nicht gefunden" + +#. module: base_location_nuts +#: model:ir.actions.todo,note:base_location_nuts.config_wizard_nuts +msgid "You can import NUTS from RAMON european service." +msgstr "Sie können NUTS vom Europäischen RAMON-Dienst importieren" + +#. module: base_location_nuts +#: model:ir.actions.act_window,help:base_location_nuts.res_partner_nuts_action +msgid "" +"You must click at import wizard to populate NUTS items\n" +" in Odoo database in:\n" +" Sales > Configuration > Address Book > Localization > Import NUTS 2013" +msgstr "Sie müssen den Import-Assistenten wählen, um NUTS-Elemente aus NUTS in Odoo zu importieren:\nVerkauf -> Konfiguration -> Adressbuch Lokalisierung -> Importiere NUTS 2013" diff --git a/base_location_nuts/i18n/es.po b/base_location_nuts/i18n/es.po index 86f6ef3ca..367aa51f4 100644 --- a/base_location_nuts/i18n/es.po +++ b/base_location_nuts/i18n/es.po @@ -10,7 +10,7 @@ msgstr "" "POT-Creation-Date: 2015-12-30 17:07+0100\n" "PO-Revision-Date: 2015-12-30 17:11+0100\n" "Last-Translator: OCA Transbot \n" -"Language-Team: Spanish (http://www.transifex.com/oca/OCA-partner-contact-8-0/" +"Language-Team: Spanish (https://www.transifex.com/oca/OCA-partner-contact-8-0/" "language/es/)\n" "Language: es\n" "MIME-Version: 1.0\n" diff --git a/base_location_nuts/i18n/fi.po b/base_location_nuts/i18n/fi.po new file mode 100644 index 000000000..be165a45d --- /dev/null +++ b/base_location_nuts/i18n/fi.po @@ -0,0 +1,212 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_location_nuts +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: partner-contact (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-19 01:46+0000\n" +"PO-Revision-Date: 2015-10-06 13:57+0000\n" +"Last-Translator: <>\n" +"Language-Team: Finnish (https://www.transifex.com/oca/OCA-partner-contact-8-0/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Cancel" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,children:0 +msgid "Children" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,code:0 +msgid "Code" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,country_id:0 +msgid "Country" +msgstr "Maa" + +#. module: base_location_nuts +#: field:nuts.import,create_uid:0 field:res.partner.nuts,create_uid:0 +msgid "Created by" +msgstr "Luonut" + +#. module: base_location_nuts +#: field:nuts.import,create_date:0 field:res.partner.nuts,create_date:0 +msgid "Created on" +msgstr "Luotu" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:130 +#, python-format +msgid "Downloaded file is not a valid XML file" +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:122 +#, python-format +msgid "Got an error %d when trying to download the file %s." +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:118 +#, python-format +msgid "Got an error when trying to download the file: %s." +msgstr "" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Group By" +msgstr "" + +#. module: base_location_nuts +#: field:nuts.import,id:0 field:res.partner.nuts,id:0 +msgid "ID" +msgstr "ID" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import" +msgstr "" + +#. module: base_location_nuts +#: model:ir.ui.menu,name:base_location_nuts.nuts_import_menu +msgid "Import NUTS 2013" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.nuts_import_action +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import NUTS 2013 from RAMON" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_nuts_import +msgid "Import NUTS items from European RAMON service" +msgstr "" + +#. module: base_location_nuts +#: field:nuts.import,write_uid:0 field:res.partner.nuts,write_uid:0 +msgid "Last Updated by" +msgstr "Viimeksi päivitetty" + +#. module: base_location_nuts +#: field:nuts.import,write_date:0 field:res.partner.nuts,write_date:0 +msgid "Last Updated on" +msgstr "Viimeksi päivittänyt" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,level:0 +msgid "Level" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner_nuts +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_form +msgid "NUTS Item" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.res_partner_nuts_action +#: model:ir.ui.menu,name:base_location_nuts.res_partner_nuts_menu +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_tree +msgid "NUTS Items" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,name:0 +msgid "Name" +msgstr "Nimi" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_left:0 +msgid "Parent Left" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_right:0 +msgid "Parent Right" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_id:0 +msgid "Parent id" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner +msgid "Partner" +msgstr "Kumppani" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:34 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,region:0 +#, python-format +msgid "Region" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +msgid "Salesperson" +msgstr "Myyjä" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Search NUTS" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,state_id:0 +msgid "State" +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:35 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,substate:0 +#, python-format +msgid "Substate" +msgstr "" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "" +"This wizard will download the lastest version of\n" +" NUTS 2013 from Europe RAMON metadata service.\n" +" Updating or creating new NUTS entries if not\n" +" found already in the system, and DELETING MISSING\n" +" ENTRIES from new downloaded file." +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:97 +#, python-format +msgid "Value not found for mandatory field %s" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.todo,note:base_location_nuts.config_wizard_nuts +msgid "You can import NUTS from RAMON european service." +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,help:base_location_nuts.res_partner_nuts_action +msgid "" +"You must click at import wizard to populate NUTS items\n" +" in Odoo database in:\n" +" Sales > Configuration > Address Book > Localization > Import NUTS 2013" +msgstr "" diff --git a/base_location_nuts/i18n/it.po b/base_location_nuts/i18n/it.po new file mode 100644 index 000000000..41a95f17f --- /dev/null +++ b/base_location_nuts/i18n/it.po @@ -0,0 +1,237 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_location_nuts +# +# Translators: +# Paolo Valier, 2016 +msgid "" +msgstr "" +"Project-Id-Version: partner-contact (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-03-13 00:57+0000\n" +"PO-Revision-Date: 2016-03-13 17:23+0000\n" +"Last-Translator: Paolo Valier\n" +"Language-Team: Italian (https://www.transifex.com/oca/OCA-partner-contact-8-0/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Cancel" +msgstr "Annulla" + +#. module: base_location_nuts +#: field:res.partner.nuts,child_ids:0 +msgid "Children" +msgstr "Figlio" + +#. module: base_location_nuts +#: field:res.partner.nuts,code:0 +msgid "Code" +msgstr "Codice" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_country +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,country_id:0 +msgid "Country" +msgstr "Nazione" + +#. module: base_location_nuts +#: field:nuts.import,create_uid:0 field:res.partner.nuts,create_uid:0 +msgid "Created by" +msgstr "Creato da" + +#. module: base_location_nuts +#: field:nuts.import,create_date:0 field:res.partner.nuts,create_date:0 +msgid "Created on" +msgstr "Creato il" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:128 +#, python-format +msgid "Downloaded file is not a valid XML file" +msgstr "Il file scaricato non è un file XML valido" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:120 +#, python-format +msgid "Got an error %d when trying to download the file %s." +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:116 +#, python-format +msgid "Got an error when trying to download the file: %s." +msgstr "" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Group By" +msgstr "Raggruppa per" + +#. module: base_location_nuts +#: field:nuts.import,id:0 field:res.partner.nuts,id:0 +msgid "ID" +msgstr "ID" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import" +msgstr "Importa" + +#. module: base_location_nuts +#: model:ir.ui.menu,name:base_location_nuts.nuts_import_menu +msgid "Import NUTS 2013" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.nuts_import_action +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import NUTS 2013 from RAMON" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_nuts_import +msgid "Import NUTS items from European RAMON service" +msgstr "" + +#. module: base_location_nuts +#: field:nuts.import,write_uid:0 field:res.partner.nuts,write_uid:0 +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: base_location_nuts +#: field:nuts.import,write_date:0 field:res.partner.nuts,write_date:0 +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,level:0 +msgid "Level" +msgstr "Livello" + +#. module: base_location_nuts +#: help:res.country,state_level:0 +msgid "Level for the state NUTS category." +msgstr "" + +#. module: base_location_nuts +#: view:res.country:base_location_nuts.view_country_form +msgid "NUTS" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner_nuts +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_form +msgid "NUTS Item" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.res_partner_nuts_action +#: model:ir.ui.menu,name:base_location_nuts.res_partner_nuts_menu +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_tree +msgid "NUTS Items" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,nuts1_id:0 +msgid "NUTS L1" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,nuts2_id:0 +msgid "NUTS L2" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,nuts3_id:0 +msgid "NUTS L3" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,nuts4_id:0 +msgid "NUTS L4" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,name:0 +msgid "Name" +msgstr "Nome" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_left:0 +msgid "Parent Left" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_right:0 +msgid "Parent Right" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_id:0 +msgid "Parent id" +msgstr "" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +msgid "Salesperson" +msgstr "" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Search NUTS" +msgstr "" + +#. module: base_location_nuts +#: field:res.partner.nuts,state_id:0 +msgid "State" +msgstr "Provincia" + +#. module: base_location_nuts +#: field:res.country,state_level:0 +msgid "State level" +msgstr "" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "" +"This wizard will download the lastest version of\n" +" NUTS 2013 from Europe RAMON metadata service.\n" +" Updating or creating new NUTS entries if not\n" +" found already in the system, and DELETING MISSING\n" +" ENTRIES from new downloaded file." +msgstr "" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:95 +#, python-format +msgid "Value not found for mandatory field %s" +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.todo,note:base_location_nuts.config_wizard_nuts +msgid "You can import NUTS from RAMON european service." +msgstr "" + +#. module: base_location_nuts +#: model:ir.actions.act_window,help:base_location_nuts.res_partner_nuts_action +msgid "" +"You must click at import wizard to populate NUTS items\n" +" in Odoo database in:\n" +" Sales > Configuration > Address Book > Localization > Import NUTS 2013" +msgstr "" diff --git a/base_location_nuts/i18n/sl.po b/base_location_nuts/i18n/sl.po new file mode 100644 index 000000000..c1c9f133c --- /dev/null +++ b/base_location_nuts/i18n/sl.po @@ -0,0 +1,213 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_location_nuts +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: partner-contact (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-09 15:48+0000\n" +"PO-Revision-Date: 2015-10-07 10:36+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (https://www.transifex.com/oca/OCA-partner-contact-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Cancel" +msgstr "Preklic" + +#. module: base_location_nuts +#: field:res.partner.nuts,children:0 +msgid "Children" +msgstr "Podrejeni" + +#. module: base_location_nuts +#: field:res.partner.nuts,code:0 +msgid "Code" +msgstr "Koda" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,country_id:0 +msgid "Country" +msgstr "Država" + +#. module: base_location_nuts +#: field:nuts.import,create_uid:0 field:res.partner.nuts,create_uid:0 +msgid "Created by" +msgstr "Ustvaril" + +#. module: base_location_nuts +#: field:nuts.import,create_date:0 field:res.partner.nuts,create_date:0 +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:130 +#, python-format +msgid "Downloaded file is not a valid XML file" +msgstr "Prenesena datoteka ni veljavna XML datoteka" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:122 +#, python-format +msgid "Got an error %d when trying to download the file %s." +msgstr "Napaka %d pri poskusu prenosa datoteke %s." + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:118 +#, python-format +msgid "Got an error when trying to download the file: %s." +msgstr "Napaka pri poskusu prenosa datoteke: %s." + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Group By" +msgstr "Združi po" + +#. module: base_location_nuts +#: field:nuts.import,id:0 field:res.partner.nuts,id:0 +msgid "ID" +msgstr "ID" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import" +msgstr "Uvoz" + +#. module: base_location_nuts +#: model:ir.ui.menu,name:base_location_nuts.nuts_import_menu +msgid "Import NUTS 2013" +msgstr "Uvoz NUTS 2013" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.nuts_import_action +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "Import NUTS 2013 from RAMON" +msgstr "Uvoz NUTS 2013 iz RAMON" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_nuts_import +msgid "Import NUTS items from European RAMON service" +msgstr "Uvoz NUTS postavk iz evropske RAMON storitve" + +#. module: base_location_nuts +#: field:nuts.import,write_uid:0 field:res.partner.nuts,write_uid:0 +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: base_location_nuts +#: field:nuts.import,write_date:0 field:res.partner.nuts,write_date:0 +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +#: field:res.partner.nuts,level:0 +msgid "Level" +msgstr "Nivo" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner_nuts +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_form +msgid "NUTS Item" +msgstr "NUTS postavka" + +#. module: base_location_nuts +#: model:ir.actions.act_window,name:base_location_nuts.res_partner_nuts_action +#: model:ir.ui.menu,name:base_location_nuts.res_partner_nuts_menu +#: view:res.partner.nuts:base_location_nuts.res_partner_nuts_tree +msgid "NUTS Items" +msgstr "NUTS postavke" + +#. module: base_location_nuts +#: field:res.partner.nuts,name:0 +msgid "Name" +msgstr "Naziv" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_left:0 +msgid "Parent Left" +msgstr "Levo nadrejeni" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_right:0 +msgid "Parent Right" +msgstr "Desno nadrejeni" + +#. module: base_location_nuts +#: field:res.partner.nuts,parent_id:0 +msgid "Parent id" +msgstr "ID nadrejenega" + +#. module: base_location_nuts +#: model:ir.model,name:base_location_nuts.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:34 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,region:0 +#, python-format +msgid "Region" +msgstr "Regija" + +#. module: base_location_nuts +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +msgid "Salesperson" +msgstr "Prodajalec" + +#. module: base_location_nuts +#: view:res.partner.nuts:base_location_nuts.view_res_partner_nuts_filter +msgid "Search NUTS" +msgstr "Iskanje NUTS" + +#. module: base_location_nuts +#: field:res.partner.nuts,state_id:0 +msgid "State" +msgstr "Zvezna država" + +#. module: base_location_nuts +#: code:addons/base_location_nuts/models/res_partner.py:35 +#: view:res.partner:base_location_nuts.view_res_partner_filter_nuts +#: field:res.partner,substate:0 +#, python-format +msgid "Substate" +msgstr "Pod-država" + +#. module: base_location_nuts +#: view:nuts.import:base_location_nuts.nuts_import_form +msgid "" +"This wizard will download the lastest version of\n" +" NUTS 2013 from Europe RAMON metadata service.\n" +" Updating or creating new NUTS entries if not\n" +" found already in the system, and DELETING MISSING\n" +" ENTRIES from new downloaded file." +msgstr "Ta čarovnik bo prenesel zadnjo verzijo\n NUTS 2013 iz evropske RAMON metadata storitve.\n Posodabljanje ali ustvarjanje novih NUTS vnosov, če\n niso že v sistemu in BRISANJE MANJKAJOČIH\n VNOSOV iz prenesene datoteke." + +#. module: base_location_nuts +#: code:addons/base_location_nuts/wizard/nuts_import.py:97 +#, python-format +msgid "Value not found for mandatory field %s" +msgstr "Vrednost obveznega polja %s ni najdena" + +#. module: base_location_nuts +#: model:ir.actions.todo,note:base_location_nuts.config_wizard_nuts +msgid "You can import NUTS from RAMON european service." +msgstr "Uvozite lahko NUTS iz RAMON evropske storitve." + +#. module: base_location_nuts +#: model:ir.actions.act_window,help:base_location_nuts.res_partner_nuts_action +msgid "" +"You must click at import wizard to populate NUTS items\n" +" in Odoo database in:\n" +" Sales > Configuration > Address Book > Localization > Import NUTS 2013" +msgstr "Kliknite na čarovnik za uvoz za naselitev NUTS postavk\n v Odoo podatkovno bazo v:\n Prodaja > Nastavitve > Imenik > Lokalizacija > Uvoz NUTS 2013" diff --git a/base_location_nuts/models/__init__.py b/base_location_nuts/models/__init__.py index 2a172bcaa..9f362acc6 100644 --- a/base_location_nuts/models/__init__.py +++ b/base_location_nuts/models/__init__.py @@ -1,10 +1,5 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import ( - res_country, - res_partner_nuts, - res_partner, -) +from . import res_country +from . import res_partner +from . import res_partner_nuts diff --git a/base_location_nuts/models/res_country.py b/base_location_nuts/models/res_country.py index e82947561..677c8086d 100644 --- a/base_location_nuts/models/res_country.py +++ b/base_location_nuts/models/res_country.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# Copyright 2015 Antonio Espinosa +# Copyright 2016 Jairo Llopis +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import fields, models class ResCountry(models.Model): diff --git a/base_location_nuts/models/res_partner.py b/base_location_nuts/models/res_partner.py index c5ddae6e7..a623a37f6 100644 --- a/base_location_nuts/models/res_partner.py +++ b/base_location_nuts/models/res_partner.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# Copyright 2015 Antonio Espinosa +# Copyright 2016 Jairo Llopis # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api +from odoo import api, fields, models class ResPartner(models.Model): @@ -22,24 +22,24 @@ class ResPartner(models.Model): comodel_name='res.partner.nuts', domain=[('level', '=', 4)], string="NUTS L4") - @api.multi def _onchange_nuts(self, level): field = self["nuts%d_id" % level] - country_id = field.country_id.id - state_id = field.state_id.id - if country_id and self.country_id.id != country_id: + country_id = field.country_id + state_id = field.state_id + if country_id and self.country_id != country_id: self.country_id = country_id - if state_id and self.state_id.id != state_id: + if state_id and self.state_id != state_id: self.state_id = state_id - if (level - 1) > 0: - parent_id = field.parent_id.id + if level > 1: + parent_id = field.parent_id if parent_id: - parent_field = 'nuts%d_id' % (level - 1) - if self[parent_field].id != parent_id: - self[parent_field] = parent_id - result = dict() + nuts_parent_level = 'nuts%d_id' % (level - 1) + parent_field = self[nuts_parent_level] + if parent_field != parent_id: + self[nuts_parent_level] = parent_id + result = {} if country_id and level < 4: - result['domain'] = dict() + result['domain'] = {} while level < 4: parent_field = 'nuts%d_id' % level domain_field = 'nuts%d_id' % (level + 1) @@ -51,27 +51,22 @@ class ResPartner(models.Model): level += 1 return result - @api.multi @api.onchange('nuts4_id') def _onchange_nuts4_id(self): return self._onchange_nuts(4) - @api.multi @api.onchange('nuts3_id') def _onchange_nuts3_id(self): return self._onchange_nuts(3) - @api.multi @api.onchange('nuts2_id') def _onchange_nuts2_id(self): return self._onchange_nuts(2) - @api.multi @api.onchange('nuts1_id') def _onchange_nuts1_id(self): return self._onchange_nuts(1) - @api.multi @api.onchange('country_id') def _onchange_country_id(self): """Sensible values and domains for related fields.""" @@ -85,9 +80,8 @@ class ResPartner(models.Model): domain[field] = list(country_domain) # Using list() to copy fields.remove('state_id') for field in fields: - level = int(field[:5][-1]) - if level: - domain[field].append(('level', '=', level)) + level = int(field[4]) + domain[field].append(('level', '=', level)) if self.country_id: nuts1 = self.env['res.partner.nuts'].search([ ('level', '=', 1), @@ -99,20 +93,18 @@ class ResPartner(models.Model): 'domain': domain, } - @api.multi - def onchange_state(self, state_id): - result = super(ResPartner, self).onchange_state(state_id) - state = self.env['res.country.state'].browse(state_id) - if state.country_id.state_level: - nuts_state = self.env['res.partner.nuts'].search([ - ('level', '=', state.country_id.state_level), - ('state_id', '=', state.id) - ], limit=1) - if nuts_state: - field = 'nuts%d_id' % state.country_id.state_level - result.setdefault("value", dict()) - result['value'][field] = nuts_state.id - return result + @api.onchange('state_id') + def onchange_state_id_base_location_nuts(self): + if self.state_id: + self.country_id = self.state_id.country_id + if self.state_id.country_id.state_level: + nuts_state = self.env['res.partner.nuts'].search([ + ('level', '=', self.state_id.country_id.state_level), + ('state_id', '=', self.state_id.id) + ], limit=1) + if nuts_state: + field = 'nuts%d_id' % self.state_id.country_id.state_level + self[field] = nuts_state @api.model def _address_fields(self): diff --git a/base_location_nuts/models/res_partner_nuts.py b/base_location_nuts/models/res_partner_nuts.py index cea22cf92..b61da0313 100644 --- a/base_location_nuts/models/res_partner_nuts.py +++ b/base_location_nuts/models/res_partner_nuts.py @@ -1,33 +1,32 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# -*- coding: utf-8 -*- +# Copyright 2015 Antonio Espinosa +# Copyright 2016 Jairo Llopis +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import fields, models class ResPartnerNuts(models.Model): _name = 'res.partner.nuts' - _order = "parent_left" - _parent_order = "name" + _order = 'parent_left' + _parent_order = 'name' _parent_store = True - _description = "NUTS Item" + _description = 'NUTS Item' # NUTS fields level = fields.Integer(required=True) code = fields.Char(required=True) name = fields.Char(required=True, translate=True) - country_id = fields.Many2one(comodel_name='res.country', string="Country", + country_id = fields.Many2one(comodel_name='res.country', string='Country', required=True) state_id = fields.Many2one(comodel_name='res.country.state', string='State') # Parent hierarchy parent_id = fields.Many2one(comodel_name='res.partner.nuts', ondelete='restrict') - child_ids = fields.One2many( - 'res.partner.nuts', - 'parent_id', - "Children", - oldname="children") - parent_left = fields.Integer('Parent Left', select=True) - parent_right = fields.Integer('Parent Right', select=True) + child_ids = fields.One2many(comodel_name='res.partner.nuts', + inverse_name='parent_id', string='Children', + oldname='children') + parent_left = fields.Integer('Parent Left', index=True) + parent_right = fields.Integer('Parent Right', index=True) diff --git a/base_location_nuts/tests/__init__.py b/base_location_nuts/tests/__init__.py new file mode 100644 index 000000000..d04b777eb --- /dev/null +++ b/base_location_nuts/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_base_location_nuts diff --git a/base_location_nuts/tests/test_base_location_nuts.py b/base_location_nuts/tests/test_base_location_nuts.py new file mode 100644 index 000000000..f523d8412 --- /dev/null +++ b/base_location_nuts/tests/test_base_location_nuts.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 David Vidal +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common +from odoo.exceptions import UserError + + +class TestBaseLocationNuts(common.SavepointCase): + @classmethod + def setUpClass(cls): + super(TestBaseLocationNuts, cls).setUpClass() + cls.importer = cls.env['nuts.import'] + cls.importer.run_import() # loads nuts + cls.country_1 = cls.env['res.country'].search([('code', '=', 'ES')]) + cls.country_2 = cls.env['res.country'].search([('code', '=', 'PT')]) + cls.nuts1_2 = cls.env[ + 'res.partner.nuts'].search([('code', '=', 'PT')]) + cls.nuts2_1 = cls.env[ + 'res.partner.nuts'].search([('code', '=', 'ES2')]) + cls.nuts3_1 = cls.env[ + 'res.partner.nuts'].search([('code', '=', 'ES24')]) + cls.nuts4_1 = cls.env[ + 'res.partner.nuts'].search([('code', '=', 'ES243')]) + cls.nuts4_2 = cls.env[ + 'res.partner.nuts'].search([('code', '=', 'ES300')]) + cls.partner = cls.env['res.partner'].create({ + 'name': 'Test partner', + 'country_id': cls.country_1.id, + }) + cls.state_1 = cls.env['res.country.state'].create({ + 'name': 'Zaragoza Test', + 'code': 'ZT', + 'country_id': cls.country_1.id, + }) + cls.nuts4_1.state_id = cls.state_1 + cls.state_2 = cls.env['res.country.state'].create({ + 'name': 'Madrid Test', + 'code': 'MT', + 'country_id': cls.country_1.id, + }) + cls.nuts4_2.state_id = cls.state_2 + cls.country_1.state_level = 4 + + def test_onchange_nuts_country(self): + self.partner.nuts1_id = self.nuts1_2 + self.partner._onchange_nuts1_id() + self.assertEqual(self.partner.country_id, self.nuts1_2.country_id) + + def test_onchange_nuts(self): + self.partner.country_id = self.country_2 + self.partner._onchange_country_id() + self.assertEqual(self.partner.nuts1_id.country_id, + self.partner.country_id) + self.partner.nuts4_id = self.nuts4_1 + self.partner._onchange_nuts4_id() + self.assertEqual(self.partner.country_id, + self.country_1) + self.assertEqual(self.partner.nuts3_id, self.nuts3_1) + self.partner._onchange_nuts3_id() + self.assertEqual(self.partner.nuts2_id, self.nuts2_1) + self.partner._onchange_nuts2_id() + self.assertEqual(self.partner.nuts1_id.country_id, self.country_1) + self.partner.country_id = self.country_2 + self.partner._onchange_country_id() + self.assertEqual(self.partner.country_id, self.nuts1_2.country_id) + self.assertFalse(self.partner.nuts2_id) + self.assertFalse(self.partner.nuts3_id) + self.assertFalse(self.partner.nuts4_id) + + def test_onchange_states(self): + self.partner.state_id = self.state_2 + self.partner.onchange_state_id_base_location_nuts() + self.assertEqual(self.state_2, self.partner.nuts4_id.state_id) + self.partner.state_id = self.state_1 + self.partner.onchange_state_id_base_location_nuts() + self.assertEqual(self.state_1, self.partner.nuts4_id.state_id) + self.partner._onchange_nuts4_id() + self.assertEqual(self.partner.nuts3_id, self.nuts3_1) + self.partner._onchange_nuts3_id() + self.assertEqual(self.partner.nuts2_id, self.nuts2_1) + self.partner._onchange_nuts2_id() + self.assertEqual(self.partner.nuts1_id.country_id, self.country_1) + + def test_download_exceptions(self): + """ Tests download exceptions """ + with self.assertRaises(UserError): + self.importer._download_nuts(url_base='htttt://test.com') + with self.assertRaises(UserError): + self.importer._download_nuts(url_base='http://ec.europa.eu/_404') diff --git a/base_location_nuts/views/res_country_view.xml b/base_location_nuts/views/res_country_view.xml index cb451f78b..3d2222386 100644 --- a/base_location_nuts/views/res_country_view.xml +++ b/base_location_nuts/views/res_country_view.xml @@ -1,10 +1,5 @@ - - - - + NUTS fields @@ -21,5 +16,4 @@ - - + diff --git a/base_location_nuts/views/res_partner_nuts_view.xml b/base_location_nuts/views/res_partner_nuts_view.xml index 3ecad6631..610a6c245 100644 --- a/base_location_nuts/views/res_partner_nuts_view.xml +++ b/base_location_nuts/views/res_partner_nuts_view.xml @@ -1,9 +1,5 @@ - - - + NUTS Items tree @@ -72,8 +68,7 @@ - - \ No newline at end of file + diff --git a/base_location_nuts/views/res_partner_view.xml b/base_location_nuts/views/res_partner_view.xml index 9bf0cd81b..bdcd94057 100644 --- a/base_location_nuts/views/res_partner_view.xml +++ b/base_location_nuts/views/res_partner_view.xml @@ -1,9 +1,5 @@ - - - + Partner form with NUTS @@ -36,7 +32,7 @@ - + @@ -53,5 +49,4 @@ - - + diff --git a/base_location_nuts/wizard/__init__.py b/base_location_nuts/wizard/__init__.py index 66654141f..b5a60faa3 100644 --- a/base_location_nuts/wizard/__init__.py +++ b/base_location_nuts/wizard/__init__.py @@ -1,6 +1,3 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import nuts_import diff --git a/base_location_nuts/wizard/nuts_import.py b/base_location_nuts/wizard/nuts_import.py index 2073bceff..8e6223c56 100644 --- a/base_location_nuts/wizard/nuts_import.py +++ b/base_location_nuts/wizard/nuts_import.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -# © 2015 Antiun Ingeniería S.L. - Antonio Espinosa -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# Copyright 2015 Antonio Espinosa +# Copyright 2016 Jairo Llopis +# Copyright 2017 David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import models, api, _ -from openerp.exceptions import Warning as UserError +from odoo import _, api, models +from odoo.exceptions import UserError import requests import re import logging @@ -13,6 +14,16 @@ from collections import OrderedDict logger = logging.getLogger(__name__) +# Default server values +URL_BASE = 'http://ec.europa.eu' +URL_PATH = '/eurostat/ramon/nomenclatures/index.cfm' +URL_PARAMS = {'TargetUrl': 'ACT_OTH_CLS_DLD', + 'StrNom': 'NUTS_2013', + 'StrFormat': 'XML', + 'StrLanguageCode': 'EN', + 'StrLayoutCode': 'HIERARCHIC' + } + class NutsImport(models.TransientModel): _name = 'nuts.import' @@ -96,16 +107,13 @@ class NutsImport(models.TransientModel): item[k] = value return item - def _download_nuts(self): - url_base = 'http://ec.europa.eu' - url_path = '/eurostat/ramon/nomenclatures/index.cfm' - url_params = { - 'TargetUrl': 'ACT_OTH_CLS_DLD', - 'StrNom': 'NUTS_2013', - 'StrFormat': 'XML', - 'StrLanguageCode': 'EN', - 'StrLayoutCode': 'HIERARCHIC' - } + def _download_nuts(self, url_base=None, url_path=None, url_params=None): + if not url_base: + url_base = URL_BASE + if not url_path: + url_path = URL_PATH + if not url_params: + url_params = URL_PARAMS url = url_base + url_path + '?' url += '&'.join([k + '=' + v for k, v in url_params.iteritems()]) logger.info('Starting to download %s' % url) @@ -171,7 +179,7 @@ class NutsImport(models.TransientModel): self._parents[level - 1] = nuts.id return nuts - @api.one + @api.multi def run_import(self): nuts_model = self.env['res.partner.nuts'].\ with_context(defer_parent_store_computation=True) @@ -181,17 +189,16 @@ class NutsImport(models.TransientModel): nuts_to_delete = nuts_model.search( [('country_id', 'in', [x.id for x in self._countries.values()])]) # Download NUTS in english, create or update - logger.info('Importing NUTS 2013 English') + logger.info('Importing NUTS 2013 English...') xmlcontent = self._download_nuts() dom = etree.fromstring(xmlcontent) for node in dom.iter('Item'): - logger.debug( - 'Reading level=%s, id=%s', - node.get('idLevel', 'N/A'), - node.get('id', 'N/A')) - nuts = self.create_or_update_nuts(node) - if nuts and nuts in nuts_to_delete: - nuts_to_delete -= nuts + logger.debug('Reading level=%s, id=%s', + node.get('idLevel', 'N/A'), + node.get('id', 'N/A')) + nuts = self.create_or_update_nuts(node) + if nuts and nuts in nuts_to_delete: + nuts_to_delete -= nuts # Delete obsolete NUTS if nuts_to_delete: logger.info('%d NUTS entries deleted' % len(nuts_to_delete)) @@ -199,5 +206,4 @@ class NutsImport(models.TransientModel): logger.info( 'The wizard to create NUTS entries from RAMON ' 'has been successfully completed.') - return True diff --git a/base_location_nuts/wizard/nuts_import_view.xml b/base_location_nuts/wizard/nuts_import_view.xml index 1c023c834..206528560 100644 --- a/base_location_nuts/wizard/nuts_import_view.xml +++ b/base_location_nuts/wizard/nuts_import_view.xml @@ -1,9 +1,5 @@ - - - + NUTS import @@ -39,7 +35,7 @@ @@ -50,5 +46,4 @@ automatic - - +