[IMP] base_address_city: mixins limited to a single model are not mixins

This commit is contained in:
Christophe Simonis
2017-01-04 12:04:29 +01:00
parent 44e1f9ab96
commit 53beafef4e
+19 -24
View File
@@ -5,30 +5,6 @@ from lxml import etree
from odoo import api, models, fields
class FormatAddressMixin(models.AbstractModel):
_inherit = "format.address.mixin"
@api.model
def _fields_view_get_address(self, arch):
arch = super(FormatAddressMixin, self)._fields_view_get_address(arch)
if self._name == 'res.partner':
#render the partner address accordingly to address_view_id
doc = etree.fromstring(arch)
for city_node in doc.xpath("//field[@name='city']"):
replacement_xml = """
<div>
<field name="country_enforce_cities" invisible="1"/>
<field name='city' attrs="{'invisible': [('country_enforce_cities', '=', True), ('city_id', '!=', False)]}"/>
<field name='city_id' attrs="{'invisible': [('country_enforce_cities', '=', False)]}"/>
</div>
"""
city_id_node = etree.fromstring(replacement_xml)
city_node.getparent().replace(city_node, city_id_node)
arch = etree.tostring(doc)
return arch
class Partner(models.Model):
_inherit = 'res.partner'
@@ -40,3 +16,22 @@ class Partner(models.Model):
self.city = self.city_id.name
self.zip = self.city_id.zipcode
self.state_id = self.city_id.state_id
@api.model
def _fields_view_get_address(self, arch):
arch = super(Partner, self)._fields_view_get_address(arch)
# render the partner address accordingly to address_view_id
doc = etree.fromstring(arch)
for city_node in doc.xpath("//field[@name='city']"):
replacement_xml = """
<div>
<field name="country_enforce_cities" invisible="1"/>
<field name='city' attrs="{'invisible': [('country_enforce_cities', '=', True), ('city_id', '!=', False)]}"/>
<field name='city_id' attrs="{'invisible': [('country_enforce_cities', '=', False)]}"/>
</div>
"""
city_id_node = etree.fromstring(replacement_xml)
city_node.getparent().replace(city_node, city_id_node)
arch = etree.tostring(doc)
return arch