[FIX] fields: inherited fields should get 'string' from their parent field
authorRaphael Collet <rco@openerp.com>
Thu, 23 Oct 2014 09:14:52 +0000 (11:14 +0200)
committerRaphael Collet <rco@openerp.com>
Tue, 28 Oct 2014 08:12:31 +0000 (09:12 +0100)
Because some parameters of a field may be determined during its setup, we have
to update the corresponding column after the setup, and recompute _all_columns
to make it consistent.

openerp/fields.py
openerp/models.py

index ae8f437..52d594d 100644 (file)
@@ -319,7 +319,8 @@ class Field(object):
                 self._free_attrs.append(attr)
             setattr(self, attr, value)
 
-        if not self.string:
+        if not self.string and not self.related:
+            # related fields get their string from their parent field
             self.string = name.replace('_', ' ').capitalize()
 
         # determine self.default and cls._defaults in a consistent way
index 143ac53..18acf3f 100644 (file)
@@ -2980,6 +2980,12 @@ class BaseModel(object):
                 if not partial:
                     raise
 
+        # update columns (fields may have changed), and column_infos
+        for name, field in self._fields.iteritems():
+            if field.store:
+                self._columns[name] = field.to_column()
+        self._inherits_reload()
+
         # group fields by compute to determine field.computed_fields
         fields_by_compute = defaultdict(list)
         for field in self._fields.itervalues():