[IMP] use model._fields instead of model._all_columns to cover all fields
[odoo/odoo.git] / openerp / addons / base / ir / ir_translation.py
index 9e0dd5e..a16933b 100644 (file)
@@ -399,15 +399,15 @@ class ir_translation(osv.osv):
         langs = [lg.code for lg in self.pool.get('res.lang').browse(cr, uid, langs_ids, context=context)]
         main_lang = 'en_US'
         translatable_fields = []
-        for f, info in trans_model._all_columns.items():
-            if info.column.translate:
-                if info.parent_model:
-                    parent_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0]
-                    translatable_fields.append({ 'name': f, 'id': parent_id, 'model': info.parent_model })
+        for k, f in trans_model._fields.items():
+            if f.translate:
+                if f.inherited:
+                    parent_id = trans_model.read(cr, uid, [id], [f.related[0]], context=context)[0][f.related[0]][0]
+                    translatable_fields.append({'name': k, 'id': parent_id, 'model': f.base_field.model})
                     domain.insert(0, '|')
-                    domain.extend(['&', ('res_id', '=', parent_id), ('name', '=', "%s,%s" % (info.parent_model, f))])
+                    domain.extend(['&', ('res_id', '=', parent_id), ('name', '=', "%s,%s" % (f.base_field.model, k))])
                 else:
-                    translatable_fields.append({ 'name': f, 'id': id, 'model': model })
+                    translatable_fields.append({'name': k, 'id': id, 'model': model })
         if len(langs):
             fields = [f.get('name') for f in translatable_fields]
             record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0]
@@ -432,9 +432,9 @@ class ir_translation(osv.osv):
             'domain': domain,
         }
         if field:
-            info = trans_model._all_columns[field]
+            f = trans_model._fields[field]
             action['context'] = {
-                'search_default_name': "%s,%s" % (info.parent_model or model, field)
+                'search_default_name': "%s,%s" % (f.base_field.model, field)
             }
         return action