diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-11-30 18:43:08 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-11-30 18:43:08 +0100 |
| commit | 42264d8dcb7f8d0795c84718d1fc9a5fd1aefd32 (patch) | |
| tree | 216ded7eac5ba06623892aaaece74c586afd4b5e /odoo | |
| parent | e4a281b5a5f7ea44e4f25259b1a84cb0dc437ebc (diff) | |
| parent | 5d7ad2b16cc3ef579a6657822b7c57b07fef4f52 (diff) | |
[MERGE] forward port branch saas-16 up to 5d7ad2b16cc
Diffstat (limited to 'odoo')
| -rw-r--r-- | odoo/addons/base/ir/ir_translation.py | 10 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_translation_view.xml | 1 | ||||
| -rw-r--r-- | odoo/addons/base/res/res_country_data.xml | 1 | ||||
| -rw-r--r-- | odoo/addons/base/res/res_currency_data.xml | 1 | ||||
| -rw-r--r-- | odoo/addons/test_impex/tests/test_export.py | 43 | ||||
| -rw-r--r-- | odoo/models.py | 16 |
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 |
