From 34cc06440061c31210617eddd0bbf39f004058de Mon Sep 17 00:00:00 2001
From: Olivier Dony <odo@openerp.com>
Date: Mon, 11 Aug 2014 16:02:08 +0200
Subject: [PATCH] [IMP] mail.mail: simplify: no default for `headers` field

This avoids storing useless "{}" values
in the database when there are no headers,
and avoids having to update all existing
entries when this column is added.
Just requires simple tests before evaluating
the headers contents.
---
 addons/mail/mail_group.py                      | 12 +++++++-----
 addons/mail/mail_mail.py                       |  1 -
 addons/website_mail_group/models/mail_group.py | 12 +++++++-----
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py
index a654a7b194b1..168bf64703c4 100644
--- a/addons/mail/mail_group.py
+++ b/addons/mail/mail_group.py
@@ -221,10 +221,12 @@ class mail_group(osv.Model):
     def message_get_email_values(self, cr, uid, id, notif_mail=None, context=None):
         res = super(mail_group, self).message_get_email_values(cr, uid, id, notif_mail=notif_mail, context=context)
         group = self.browse(cr, uid, id, context=context)
-        try:
-            headers = eval(res.get('headers', '{}'))
-        except Exception:
-            headers = {}
+        headers = {}
+        if res.get('headers'):
+            try:
+                headers.update(eval(res['headers']))
+            except Exception:
+                pass
         headers['Precedence'] = 'list'
         # avoid out-of-office replies from MS Exchange
         # http://blogs.technet.com/b/exchange/archive/2006/10/06/3395024.aspx
@@ -236,5 +238,5 @@ class mail_group(osv.Model):
             # X-Forge-To: will replace To: after SMTP envelope is determined by ir.mail.server
             list_to = '"%s" <%s@%s>' % (group.name, group.alias_name, group.alias_domain)
             headers['X-Forge-To'] = list_to
-        res['headers'] = '%s' % headers
+        res['headers'] = repr(headers)
         return res
diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py
index 8d2c37c8baad..602810f7423f 100644
--- a/addons/mail/mail_mail.py
+++ b/addons/mail/mail_mail.py
@@ -67,7 +67,6 @@ class mail_mail(osv.Model):
 
     _defaults = {
         'state': 'outgoing',
-        'headers': '{}',
     }
 
     def default_get(self, cr, uid, fields, context=None):
diff --git a/addons/website_mail_group/models/mail_group.py b/addons/website_mail_group/models/mail_group.py
index 00bdcdf4258f..e45dff09af39 100644
--- a/addons/website_mail_group/models/mail_group.py
+++ b/addons/website_mail_group/models/mail_group.py
@@ -13,16 +13,18 @@ class MailGroup(osv.Model):
         res = super(MailGroup, self).message_get_email_values(cr, uid, id, notif_mail=notif_mail, context=context)
         group = self.browse(cr, uid, id, context=context)
         base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
-        try:
-            headers = eval(res.get('headers', '{}'))
-        except Exception:
-            headers = {}
+        headers = {}
+        if res.get('headers'):
+            try:
+                headers = eval(res['headers'])
+            except Exception:
+                pass
         headers.update({
             'List-Archive': '<%s/groups/%s>' % (base_url, slug(group)),
             'List-Subscribe': '<%s/groups>' % (base_url),
             'List-Unsubscribe': '<%s/groups?unsubscribe>' % (base_url,),
         })
-        res['headers'] = '%s' % headers
+        res['headers'] = repr(headers)
         return res
 
 
-- 
GitLab