summaryrefslogtreecommitdiff
path: root/addons/base_address_extended
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-01-03 12:04:34 +0000
committerThibault Delavallée <tde@odoo.com>2020-01-07 14:53:28 +0000
commitd160997c9515dd6178da83fcb1daebad0086cb86 (patch)
tree893d671487740d39f35b35cfcff7e993b4815299 /addons/base_address_extended
parentcbc2e4c103442c5e8e0eb5536d23b06a401ad747 (diff)
[MOV] base_address_extended: reorganize python code
Purpose is to reorganize code according to guidelines and split the main badly named python file, to understand that 3 models are impacted: res.company, res.country and res.partner. Task ID 2158302 PR odoo/odoo#42678
Diffstat (limited to 'addons/base_address_extended')
-rw-r--r--addons/base_address_extended/models/__init__.py4
-rw-r--r--addons/base_address_extended/models/res_company.py31
-rw-r--r--addons/base_address_extended/models/res_country.py18
-rw-r--r--addons/base_address_extended/models/res_partner.py (renamed from addons/base_address_extended/models/base_address_extended.py)99
4 files changed, 80 insertions, 72 deletions
diff --git a/addons/base_address_extended/models/__init__.py b/addons/base_address_extended/models/__init__.py
index 029aa7201b4..9af974249f4 100644
--- a/addons/base_address_extended/models/__init__.py
+++ b/addons/base_address_extended/models/__init__.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from . import base_address_extended
+from . import res_company
+from . import res_country
+from . import res_partner
diff --git a/addons/base_address_extended/models/res_company.py b/addons/base_address_extended/models/res_company.py
new file mode 100644
index 00000000000..e08dfa37448
--- /dev/null
+++ b/addons/base_address_extended/models/res_company.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class Company(models.Model):
+ _inherit = 'res.company'
+
+ street_name = fields.Char('Street Name', compute='_compute_address',
+ inverse='_inverse_street_name')
+ street_number = fields.Char('House Number', compute='_compute_address',
+ inverse='_inverse_street_number')
+ street_number2 = fields.Char('Door Number', compute='_compute_address',
+ inverse='_inverse_street_number2')
+
+ def _get_company_address_field_names(self):
+ fields_matching = super(Company, self)._get_company_address_field_names()
+ return list(set(fields_matching + ['street_name', 'street_number', 'street_number2']))
+
+ def _inverse_street_name(self):
+ for company in self:
+ company.partner_id.street_name = company.street_name
+
+ def _inverse_street_number(self):
+ for company in self:
+ company.partner_id.street_number = company.street_number
+
+ def _inverse_street_number2(self):
+ for company in self:
+ company.partner_id.street_number2 = company.street_number2
diff --git a/addons/base_address_extended/models/res_country.py b/addons/base_address_extended/models/res_country.py
new file mode 100644
index 00000000000..38f13f3be2d
--- /dev/null
+++ b/addons/base_address_extended/models/res_country.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class ResCountry(models.Model):
+ _inherit = 'res.country'
+
+ street_format = fields.Text(
+ help="Format to use for streets belonging to this country.\n\n"
+ "You can use the python-style string pattern with all the fields of the street "
+ "(for example, use '%(street_name)s, %(street_number)s' if you want to display "
+ "the street name, followed by a comma and the house number)"
+ "\n%(street_name)s: the name of the street"
+ "\n%(street_number)s: the house number"
+ "\n%(street_number2)s: the door number",
+ default='%(street_number)s/%(street_number2)s %(street_name)s', required=True)
diff --git a/addons/base_address_extended/models/base_address_extended.py b/addons/base_address_extended/models/res_partner.py
index 5f5a9c643ef..fd2fb61c498 100644
--- a/addons/base_address_extended/models/base_address_extended.py
+++ b/addons/base_address_extended/models/res_partner.py
@@ -6,21 +6,6 @@ import re
from odoo import api, fields, models, _
from odoo.exceptions import UserError
-STREET_FIELDS = ['street_name', 'street_number', 'street_number2']
-
-
-class ResCountry(models.Model):
- _inherit = 'res.country'
-
- street_format = fields.Text(
- help="Format to use for streets belonging to this country.\n\n"
- "You can use the python-style string pattern with all the fields of the street "
- "(for example, use '%(street_name)s, %(street_number)s' if you want to display "
- "the street name, followed by a comma and the house number)"
- "\n%(street_name)s: the name of the street"
- "\n%(street_number)s: the house number"
- "\n%(street_number2)s: the door number",
- default='%(street_number)s/%(street_number2)s %(street_name)s', required=True)
class Partner(models.Model):
_inherit = ['res.partner']
@@ -33,15 +18,6 @@ class Partner(models.Model):
street_number2 = fields.Char('Door', compute='_split_street', help="Door Number",
inverse='_set_street', store=True)
- def _formatting_address_fields(self):
- """Returns the list of address fields usable to format addresses."""
- return super(Partner, self)._formatting_address_fields() + self.get_street_fields()
-
- def get_street_fields(self):
- """Returns the fields that can be used in a street format.
- Overwrite this function if you want to add your own fields."""
- return STREET_FIELDS
-
def _set_street(self):
"""Updates the street field.
Writes the `street` field on the partners when one of the sub-fields in STREET_FIELDS
@@ -79,6 +55,27 @@ class Partner(models.Model):
street_value += street_format[previous_pos:]
partner.street = street_value
+ @api.depends('street')
+ def _split_street(self):
+ """Splits street value into sub-fields.
+ Recomputes the fields of STREET_FIELDS when `street` of a partner is updated"""
+ street_fields = self.get_street_fields()
+ for partner in self:
+ if not partner.street:
+ for field in street_fields:
+ partner[field] = None
+ continue
+
+ street_format = (partner.country_id.street_format or
+ '%(street_number)s/%(street_number2)s %(street_name)s')
+ street_raw = partner.street
+ vals = self._split_street_with_params(street_raw, street_format)
+ # assign the values to the fields
+ for k, v in vals.items():
+ partner[k] = v
+ for k in set(street_fields) - set(vals):
+ partner[k] = None
+
def _split_street_with_params(self, street_raw, street_format):
street_fields = self.get_street_fields()
vals = {}
@@ -119,57 +116,17 @@ class Partner(models.Model):
vals[field_name] = street_raw
return vals
-
- @api.depends('street')
- def _split_street(self):
- """Splits street value into sub-fields.
- Recomputes the fields of STREET_FIELDS when `street` of a partner is updated"""
- street_fields = self.get_street_fields()
- for partner in self:
- if not partner.street:
- for field in street_fields:
- partner[field] = None
- continue
-
- street_format = (partner.country_id.street_format or
- '%(street_number)s/%(street_number2)s %(street_name)s')
- street_raw = partner.street
- vals = self._split_street_with_params(street_raw, street_format)
- # assign the values to the fields
- for k, v in vals.items():
- partner[k] = v
- for k in set(street_fields) - set(vals):
- partner[k] = None
-
def write(self, vals):
res = super(Partner, self).write(vals)
if 'country_id' in vals and 'street' not in vals:
self._set_street()
return res
+ def _formatting_address_fields(self):
+ """Returns the list of address fields usable to format addresses."""
+ return super(Partner, self)._formatting_address_fields() + self.get_street_fields()
-class Company(models.Model):
- _inherit = 'res.company'
-
- street_name = fields.Char('Street Name', compute='_compute_address',
- inverse='_inverse_street_name')
- street_number = fields.Char('House Number', compute='_compute_address',
- inverse='_inverse_street_number')
- street_number2 = fields.Char('Door Number', compute='_compute_address',
- inverse='_inverse_street_number2')
-
- def _get_company_address_field_names(self):
- fields_matching = super(Company, self)._get_company_address_field_names()
- return list(set(fields_matching + ['street_name', 'street_number', 'street_number2']))
-
- def _inverse_street_name(self):
- for company in self:
- company.partner_id.street_name = company.street_name
-
- def _inverse_street_number(self):
- for company in self:
- company.partner_id.street_number = company.street_number
-
- def _inverse_street_number2(self):
- for company in self:
- company.partner_id.street_number2 = company.street_number2
+ def get_street_fields(self):
+ """Returns the fields that can be used in a street format.
+ Overwrite this function if you want to add your own fields."""
+ return ['street_name', 'street_number', 'street_number2']