summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-11-30 18:43:08 +0100
committerChristophe Simonis <chs@odoo.com>2017-11-30 18:43:08 +0100
commit42264d8dcb7f8d0795c84718d1fc9a5fd1aefd32 (patch)
tree216ded7eac5ba06623892aaaece74c586afd4b5e /odoo
parente4a281b5a5f7ea44e4f25259b1a84cb0dc437ebc (diff)
parent5d7ad2b16cc3ef579a6657822b7c57b07fef4f52 (diff)
[MERGE] forward port branch saas-16 up to 5d7ad2b16cc
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/ir/ir_translation.py10
-rw-r--r--odoo/addons/base/ir/ir_translation_view.xml1
-rw-r--r--odoo/addons/base/res/res_country_data.xml1
-rw-r--r--odoo/addons/base/res/res_currency_data.xml1
-rw-r--r--odoo/addons/test_impex/tests/test_export.py43
-rw-r--r--odoo/models.py16
6 files changed, 46 insertions, 26 deletions
diff --git a/odoo/addons/base/ir/ir_translation.py b/odoo/addons/base/ir/ir_translation.py
index f77d84e758b..b38f3fae8e0 100644
--- a/odoo/addons/base/ir/ir_translation.py
+++ b/odoo/addons/base/ir/ir_translation.py
@@ -680,6 +680,16 @@ class IrTranslation(models.Model):
action['context'] = {
'search_default_name': "%s,%s" % (fld.model_name, fld.name),
}
+ else:
+ rec = record
+ try:
+ while fld.related:
+ rec, fld = fld.traverse_related(rec)
+ if rec:
+ action['context'] = {'search_default_name': "%s,%s" % (fld.model_name, fld.name),}
+ except AccessError:
+ pass
+
return action
@api.model
diff --git a/odoo/addons/base/ir/ir_translation_view.xml b/odoo/addons/base/ir/ir_translation_view.xml
index 9e4937a74b1..0cfd592d40b 100644
--- a/odoo/addons/base/ir/ir_translation_view.xml
+++ b/odoo/addons/base/ir/ir_translation_view.xml
@@ -70,6 +70,7 @@
<field name="arch" type="xml">
<tree string="Translations" editable="top" create="false">
<field name="lang" readonly="1"/>
+ <field name="name" readonly="1"/>
<field name="source"/>
<field name="value"/>
<field name="state"/>
diff --git a/odoo/addons/base/res/res_country_data.xml b/odoo/addons/base/res/res_country_data.xml
index 92c77080c9f..031af455c5b 100644
--- a/odoo/addons/base/res/res_country_data.xml
+++ b/odoo/addons/base/res/res_country_data.xml
@@ -424,6 +424,7 @@
<field name="name">Denmark</field>
<field name="code">dk</field>
<field file="base/static/img/country_flags/dk.png" name="image" type="base64" />
+ <field eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" name="address_format" />
<field name="currency_id" ref="DKK" />
<field eval="45" name="phone_code" />
<field name="vat_label">VAT</field>
diff --git a/odoo/addons/base/res/res_currency_data.xml b/odoo/addons/base/res/res_currency_data.xml
index d158a91ce9b..f286190872d 100644
--- a/odoo/addons/base/res/res_currency_data.xml
+++ b/odoo/addons/base/res/res_currency_data.xml
@@ -338,6 +338,7 @@
<field name="name">ZAR</field>
<field name="symbol">R</field>
<field name="rounding">0.01</field>
+ <field name="position">before</field>
<field name="active" eval="False"/>
<field name="currency_unit_label">Rand</field>
<field name="currency_subunit_label">Cents</field>
diff --git a/odoo/addons/test_impex/tests/test_export.py b/odoo/addons/test_impex/tests/test_export.py
index 9c7311319e8..a360cfd0ef4 100644
--- a/odoo/addons/test_impex/tests/test_export.py
+++ b/odoo/addons/test_impex/tests/test_export.py
@@ -382,9 +382,13 @@ class test_o2m(CreatorCase):
def test_multiple_records_name(self):
self.assertEqual(
self.export(self.commands, fields=['const', 'value']),
- [[
- u'4', u','.join(self.names)
- ]])
+ [
+ [u'4', u'export.one2many.child:4'],
+ [u'', u'export.one2many.child:42'],
+ [u'', u'export.one2many.child:36'],
+ [u'', u'export.one2many.child:4'],
+ [u'', u'export.one2many.child:13'],
+ ])
def test_multiple_records_id(self):
export = self.export(self.commands, fields=['const', 'value/.id'])
@@ -402,19 +406,23 @@ class test_o2m(CreatorCase):
def test_multiple_records_with_name_before(self):
self.assertEqual(
self.export(self.commands, fields=['const', 'value', 'value/value']),
- [[ # exports sub-fields of very first o2m
- u'4', u','.join(self.names), u'4'
- ]])
+ [
+ [u'4', u'export.one2many.child:4', u'4'],
+ ['', u'export.one2many.child:42', u'42'],
+ ['', u'export.one2many.child:36', u'36'],
+ ['', u'export.one2many.child:4', u'4'],
+ ['', u'export.one2many.child:13', u'13'],
+ ])
def test_multiple_records_with_name_after(self):
self.assertEqual(
self.export(self.commands, fields=['const', 'value/value', 'value']),
- [ # completely ignores name_get request
- [u'4', u'4', ''],
- ['', u'42', ''],
- ['', u'36', ''],
- ['', u'4', ''],
- ['', u'13', ''],
+ [
+ [u'4', u'4', u'export.one2many.child:4'],
+ ['', u'42', u'export.one2many.child:42'],
+ ['', u'36', u'export.one2many.child:36'],
+ ['', u'4', u'export.one2many.child:4'],
+ ['', u'13', u'export.one2many.child:13'],
])
def test_multiple_subfields_neighbour(self):
@@ -585,10 +593,13 @@ class test_m2m(CreatorCase):
def test_multiple_records_name(self):
self.assertEqual(
self.export(self.commands, fields=['const', 'value']),
- [[ # FIXME: hardcoded comma, import uses config.csv_internal_sep
- # resolution: remove configurable csv_internal_sep
- u'4', u','.join(self.names)
- ]])
+ [
+ [u'4', u'export.many2many.other:4'],
+ ['', u'export.many2many.other:42'],
+ ['', u'export.many2many.other:36'],
+ ['', u'export.many2many.other:4'],
+ ['', u'export.many2many.other:13'],
+ ])
# essentially same as o2m, so boring
diff --git a/odoo/models.py b/odoo/models.py
index dea095cd4c9..ec219398d78 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -689,22 +689,18 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
current[i] = ','.join(xml_ids) or False
continue
- # recursively export the fields that follow name
- fields2 = [(p[1:] if p and p[0] == name else []) for p in fields]
+ # recursively export the fields that follow name; use
+ # 'display_name' where no subfield is exported
+ fields2 = [(p[1:] or ['display_name'] if p and p[0] == name else [])
+ for p in fields]
lines2 = value._export_rows(fields2)
if lines2:
# merge first line with record's main line
for j, val in enumerate(lines2[0]):
if val or isinstance(val, bool):
current[j] = val
- # check value of current field
- if not current[i] and not isinstance(current[i], bool):
- # assign xml_ids, and forget about remaining lines
- xml_ids = [item[1] for item in value.name_get()]
- current[i] = ','.join(xml_ids)
- else:
- # append the other lines at the end
- lines += lines2[1:]
+ # append the other lines at the end
+ lines += lines2[1:]
else:
current[i] = False