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]
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