From 4be6ac800b648cff44d06f1378c2d932afcf7bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 25 Nov 2013 17:38:08 +0100 Subject: [PATCH] [FIX] mail: in some cases tracking is called without the context (some workflows for example). In that case use the current user lang when generating the automatic message. This is done by adding it in the context if not present. lp bug: https://launchpad.net/bugs/1219163 fixed bzr revid: tde@openerp.com-20131125163808-bbbqwvx22my38zdj --- addons/mail/mail_thread.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 5f3ac13d7c7..eac8df8ebbf 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -257,19 +257,28 @@ class mail_thread(osv.AbstractModel): self.message_auto_subscribe(cr, uid, [thread_id], create_values.keys(), context=context, values=create_values) # track values - tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context) + track_ctx = dict(context) + if 'lang' not in track_ctx: + track_ctx['lang'] = self.pool.get('res.users').browse(cr, uid, uid, context=context).lang + tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=track_ctx) if tracked_fields: initial_values = {thread_id: dict((item, False) for item in tracked_fields)} - self.message_track(cr, uid, [thread_id], tracked_fields, initial_values, context=context) + self.message_track(cr, uid, [thread_id], tracked_fields, initial_values, context=track_ctx) return thread_id def write(self, cr, uid, ids, values, context=None): + if context is None: + context = {} if isinstance(ids, (int, long)): ids = [ids] + # Track initial values of tracked fields - tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context) + track_ctx = dict(context) + if 'lang' not in track_ctx: + track_ctx['lang'] = self.pool.get('res.users').browse(cr, uid, uid, context=context).lang + tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=track_ctx) if tracked_fields: - initial = self.read(cr, uid, ids, tracked_fields.keys(), context=context) + initial = self.read(cr, uid, ids, tracked_fields.keys(), context=track_ctx) initial_values = dict((item['id'], item) for item in initial) # Perform write, update followers @@ -278,7 +287,7 @@ class mail_thread(osv.AbstractModel): # Perform the tracking if tracked_fields: - self.message_track(cr, uid, ids, tracked_fields, initial_values, context=context) + self.message_track(cr, uid, ids, tracked_fields, initial_values, context=track_ctx) return result def unlink(self, cr, uid, ids, context=None):