diff options
| author | Martin Trigaux <mat@openerp.com> | 2014-07-16 10:35:52 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2014-07-25 13:58:59 +0200 |
| commit | f138aa26085d103a88dbd8bb73fb8bf5517298ad (patch) | |
| tree | 3b2c3db5a4da6ee1497cf312b2ddff4655c9aecd /addons/base_import | |
| parent | bcd9456db594496cbf0f539f96c7bb09717b549c (diff) | |
[FIX] models: display_name and name_get mismatch
- display_name uses name_get and not the other way around:
name_get should not call _compute_display_name, _compute_display_name should call name_get.
The previous behaviour was not backward-compatible with the old api.
All the models redefining name_get would have 2 different behaviors between name_get and display_name.
- Do not set an inverse function to display_name:
In most cases, writing on display_name writes on _rec_name (if any, not mandatory).
If the display_name computation is redefined, we need to redefine as well the inverse method to avoid unexpected behaviour
This required to also modify tests in base_import as readonly fields are avoided.
- Remove search method on display_name:
For the same reason as for the first point, it could be good that searching on display_name use name_search (and not the other way around).
However doing this would be very inefficiant (need to do the search, without limit, extract the ids of the name_get result just to generate
a subdomain ('id', 'in', [...]). As in most cases it would anyway mean to search on the _rec_name it's better to directly do so.
- Changing label to avoid mismatch:
In view displaying the list of fields or when a match is made on the label of a field (e.g. when importing csv file,
matching is made on both label and technical name), the fact that display_name field has '
Calling it 'Display Name' will avoid most errors.
- remove display_name definition from website_forum_doc,ir_model:
These fields are doing the same thing as the display_name of the new api, we can remove them.
We need to keep the one for res.partner as it's a stored field.
Diffstat (limited to 'addons/base_import')
| -rw-r--r-- | addons/base_import/tests/test_cases.py | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index ac5a4440523..bad79bc7cdc 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -11,18 +11,10 @@ ID_FIELD = { 'required': False, 'fields': [], } -DISPLAY_NAME_FIELD = { - 'id': 'display_name', - 'name': 'display_name', - 'string': "Name", - 'required': False, - 'fields': [], -} def make_field(name='value', string='unknown', required=False, fields=[]): return [ ID_FIELD, - DISPLAY_NAME_FIELD, {'id': name, 'name': name, 'string': string, 'required': required, 'fields': fields}, ] @@ -50,7 +42,7 @@ class test_basic_fields(BaseImportCase): def test_readonly(self): """ Readonly fields should be filtered out""" - self.assertEqualFields(self.get_fields('char.readonly'), [ID_FIELD, DISPLAY_NAME_FIELD]) + self.assertEqualFields(self.get_fields('char.readonly'), [ID_FIELD]) def test_readonly_states(self): """ Readonly fields with states should not be filtered out""" @@ -59,12 +51,12 @@ class test_basic_fields(BaseImportCase): def test_readonly_states_noreadonly(self): """ Readonly fields with states having nothing to do with readonly should still be filtered out""" - self.assertEqualFields(self.get_fields('char.noreadonly'), [ID_FIELD, DISPLAY_NAME_FIELD]) + self.assertEqualFields(self.get_fields('char.noreadonly'), [ID_FIELD]) def test_readonly_states_stillreadonly(self): """ Readonly fields with readonly states leaving them readonly always... filtered out""" - self.assertEqualFields(self.get_fields('char.stillreadonly'), [ID_FIELD, DISPLAY_NAME_FIELD]) + self.assertEqualFields(self.get_fields('char.stillreadonly'), [ID_FIELD]) def test_m2o(self): """ M2O fields should allow import of themselves (name_get), @@ -92,7 +84,6 @@ class test_o2m(BaseImportCase): def test_shallow(self): self.assertEqualFields(self.get_fields('o2m'), make_field(fields=[ ID_FIELD, - DISPLAY_NAME_FIELD, # FIXME: should reverse field be ignored? {'id': 'parent_id', 'name': 'parent_id', 'string': 'unknown', 'required': False, 'fields': [ {'id': 'parent_id', 'name': 'id', 'string': 'External ID', 'required': False, 'fields': []}, @@ -250,7 +241,6 @@ class test_preview(TransactionCase): # Order depends on iteration order of fields_get self.assertItemsEqual(result['fields'], [ ID_FIELD, - DISPLAY_NAME_FIELD, {'id': 'name', 'name': 'name', 'string': 'Name', 'required':False, 'fields': []}, {'id': 'somevalue', 'name': 'somevalue', 'string': 'Some Value', 'required':True, 'fields': []}, {'id': 'othervalue', 'name': 'othervalue', 'string': 'Other Variable', 'required':False, 'fields': []}, |
