From 6f223edf4f57b44b65f02b4711c362fa0ce44a7d Mon Sep 17 00:00:00 2001
From: Jeremy Kersten <jke@odoo.com>
Date: Thu, 9 Jun 2016 10:45:01 +0200
Subject: [PATCH] [FIX] mail: display date and datetime in tracking value with
 the right timzeone.

When tracking value is converted to be rendered as a message_post, we convert
the date/datetime with the current local from momentjs.

Related to #12327

Courtesy of @aab-odoo for help and review.
---
 addons/mail/models/mail_message.py    |  1 +
 addons/mail/static/src/js/thread.js   | 14 ++++++++++++++
 addons/mail/static/src/xml/thread.xml |  4 ++--
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py
index f86ba64ce7e2..3ef015669166 100644
--- a/addons/mail/models/mail_message.py
+++ b/addons/mail/models/mail_message.py
@@ -299,6 +299,7 @@ class Message(models.Model):
             'changed_field': tracking.field_desc,
             'old_value': tracking.get_old_display_value()[0],
             'new_value': tracking.get_new_display_value()[0],
+            'field_type': tracking.field_type,
         }) for tracking in trackings)
 
         # 4. Update message dictionaries
diff --git a/addons/mail/static/src/js/thread.js b/addons/mail/static/src/js/thread.js
index ac4c50b4533a..f0d5ae053399 100644
--- a/addons/mail/static/src/js/thread.js
+++ b/addons/mail/static/src/js/thread.js
@@ -151,6 +151,20 @@ var Thread = Widget.extend({
             msg.hour = msg.date.format('LT');
         }
 
+        if (message.tracking_value_ids && message.tracking_value_ids.length) {
+            _.each(message.tracking_value_ids, function(f) {
+                if (_.contains(['date', 'datetime'], f.field_type)) {
+                    var format = (f.field_type === 'date') ? 'LL' : 'LLL';
+                    if (f.old_value) {
+                        f.old_value = moment.utc(f.old_value).local().format(format);
+                    }
+                    if (f.new_value) {
+                        f.new_value = moment.utc(f.new_value).local().format(format);
+                    }
+                }
+            });
+        }
+
         if (_.contains(this.expanded_msg_ids, message.id)) {
             msg.expanded = true;
         }
diff --git a/addons/mail/static/src/xml/thread.xml b/addons/mail/static/src/xml/thread.xml
index 5c0c958bb695..3d622c1927d8 100644
--- a/addons/mail/static/src/xml/thread.xml
+++ b/addons/mail/static/src/xml/thread.xml
@@ -150,10 +150,10 @@
                 <li>
                     <t t-esc="value.changed_field"/>:
                     <t t-if="value.old_value">
-                        <span> <t t-esc="value.old_value"/> </span>
+                        <span> <t t-esc="value.old_value || ((value.field_type !== 'boolean') and '')"/> </span>
                         <span class="fa fa-long-arrow-right"/>
                     </t>
-                    <span> <t t-esc="value.new_value"/> </span>
+                    <span> <t t-esc="value.new_value || ((value.field_type !== 'boolean') and '')"/> </span>
                 </li>
             </t>
         </ul>
-- 
GitLab