[IMP]improve code for subtype implementation and if remove record then string shows...
authorSanjay Gohel (Open ERP) <sgo@tinyerp.com>
Wed, 28 Nov 2012 11:48:23 +0000 (17:18 +0530)
committerSanjay Gohel (Open ERP) <sgo@tinyerp.com>
Wed, 28 Nov 2012 11:48:23 +0000 (17:18 +0530)
bzr revid: sgo@tinyerp.com-20121128114823-whnokm2a1j9m3ddk

addons/mail/mail_thread.py

index e78e257..cf8dc45 100644 (file)
@@ -291,19 +291,16 @@ class mail_thread(osv.AbstractModel):
             return v
 
         def convert_for_display(v, f):
-            subtype = False
             if not v:
                 return false_value(f)
             if f._type == 'many2one':
                 if not isinstance(v, browse_record):
                     v = self.pool[f._obj].browse(cr, SUPERUSER_ID, v)
-                    if v.__hasattr__('subtype'):
-                        subtype = v.subtype
-                return (v.name_get()[0][1],subtype)
+                return v.name_get()[0][1]
             if f._type == 'selection':
                 # TODO get translated value
                 pass
-            return (v,subtype)
+            return v
 
         tracked = dict((n, f) for n, f in self._all_columns.items() if getattr(f.column, 'tracked', False))
         to_log = [k for k in values if k in tracked]
@@ -327,20 +324,32 @@ class mail_thread(osv.AbstractModel):
             model = c.parent_model or self._name
             lang = context.get('lang')
             return Trans._get_source(cr, uid, '{0},{1}'.format(model, c.name), 'field', lang, ci.column.string)
+        
+        def get_subtype(model, record):
+            record_model = self.pool[model].browse(cr, SUPERUSER_ID, record)
+            if record_model.__hasattr__('subtype'):
+                return record_model.subtype
+            return False 
 
         for record, changed_fields in changes.items():
             # TODO tpl changed_fields
             chg = []
+            subtype = False
             for f in changed_fields:
                 ci = tracked[f]
-                from_ = convert_for_display(record[f], ci.column)[0]
+                from_ = convert_for_display(record[f], ci.column)
                 to = convert_for_display(values[f], ci.column)
-                chg.append((_t(ci), from_, to[0]))
+                if to is None:
+                    to = "Removed"
+                if ci.column._type == "many2one":
+                    subtype = get_subtype(ci.column._obj,values[f])
+
+                chg.append((_t(ci), from_, to))
 
             message = MakoTemplate(self._TRACK_TEMPLATE).render_unicode(updated_fields=updated_fields,
                                                                         changes=chg)
 
-            record.message_post(message,subtype=to[1])
+            record.message_post(message,subtype=subtype)
 
         return result