summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/mass_mailing/models/mail_mail.py19
-rw-r--r--addons/mass_mailing/models/mass_mailing.py24
-rw-r--r--addons/portal_sale/__init__.py1
-rw-r--r--addons/portal_sale/mail_mail.py19
-rw-r--r--addons/portal_sale/portal_sale.py18
-rw-r--r--addons/purchase/__init__.py1
-rw-r--r--addons/purchase/mail_mail.py13
-rw-r--r--addons/purchase/purchase.py12
-rw-r--r--addons/website_mail_group/models/__init__.py1
-rw-r--r--addons/website_mail_group/models/mail_group.py32
-rw-r--r--addons/website_mail_group/models/mail_mail.py38
11 files changed, 91 insertions, 87 deletions
diff --git a/addons/mass_mailing/models/mail_mail.py b/addons/mass_mailing/models/mail_mail.py
index 2c3ee3384b6..8ac5dea8113 100644
--- a/addons/mass_mailing/models/mail_mail.py
+++ b/addons/mass_mailing/models/mail_mail.py
@@ -3,12 +3,16 @@
import urllib
import urlparse
+import re
from openerp import tools
from openerp import SUPERUSER_ID
from openerp.osv import osv, fields
+URL_REGEX = r'(\bhref=[\'"]([^\'"]+)[\'"])'
+
+
class MailMail(osv.Model):
"""Add the mass mailing campaign data to mail"""
_name = 'mail.mail'
@@ -53,11 +57,24 @@ class MailMail(osv.Model):
return url
def send_get_mail_body(self, cr, uid, ids, partner=None, context=None):
- """ Override to add the tracking URL to the body. """
+ """ Override to add the tracking URL to the body and to add
+ Statistic_id in shorted urls """
# TDE: temporary addition (mail was parameter) due to semi-new-API
body = super(MailMail, self).send_get_mail_body(cr, uid, ids, partner=partner, context=context)
mail = self.browse(cr, uid, ids[0], context=context)
+ links_blacklist = ['/unsubscribe_from_list']
+
+ if mail.mailing_id and body and mail.statistics_ids:
+ for match in re.findall(URL_REGEX, self.body_html):
+
+ href = match[0]
+ url = match[1]
+
+ if not [s for s in links_blacklist if s in href]:
+ new_href = href.replace(url, url + '/m/' + str(self.statistics_ids[0].id))
+ body = body.replace(href, new_href)
+
# prepend <base> tag for images using absolute urls
domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "web.base.url", context=context)
base = "<base href='%s'>" % domain
diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py
index be087caf4a0..8869092d302 100644
--- a/addons/mass_mailing/models/mass_mailing.py
+++ b/addons/mass_mailing/models/mass_mailing.py
@@ -3,7 +3,6 @@
from datetime import datetime
from dateutil import relativedelta
import random
-import re
from openerp import tools
from openerp import models, api, _
@@ -14,8 +13,6 @@ from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools import ustr
from openerp.osv import osv, fields
-URL_REGEX = r'(\bhref=[\'"]([^\'"]+)[\'"])'
-
class MassMailingTag(osv.Model):
"""Model of categories of mass mailing, i.e. marketing, newsletter, ... """
@@ -830,24 +827,3 @@ class MassMailing(osv.Model):
self.send_mail(cr, uid, [mass_mailing_id], context=context)
else:
self.write(cr, uid, [mass_mailing_id], {'state': 'done'}, context=context)
-
-
-class MailMail(models.Model):
- _inherit = ['mail.mail']
-
- @api.multi
- def send_get_mail_body(self, partner=None):
- """Override to add Statistic_id in shorted urls """
- links_blacklist = ['/unsubscribe_from_list']
-
- if self.mailing_id and self.body_html and self.statistics_ids:
- for match in re.findall(URL_REGEX, self.body_html):
-
- href = match[0]
- url = match[1]
-
- if not [s for s in links_blacklist if s in href]:
- new_href = href.replace(url, url + '/m/' + str(self.statistics_ids[0].id))
- self.body_html = self.body_html.replace(href, new_href)
-
- return super(MailMail, self).send_get_mail_body(partner=partner)
diff --git a/addons/portal_sale/__init__.py b/addons/portal_sale/__init__.py
index fde0473ea48..656d549df45 100644
--- a/addons/portal_sale/__init__.py
+++ b/addons/portal_sale/__init__.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+import mail_mail
import portal_sale
import res_config
diff --git a/addons/portal_sale/mail_mail.py b/addons/portal_sale/mail_mail.py
new file mode 100644
index 00000000000..cab9a266fe7
--- /dev/null
+++ b/addons/portal_sale/mail_mail.py
@@ -0,0 +1,19 @@
+from openerp.osv import osv
+
+
+class mail_mail(osv.osv):
+ _inherit = 'mail.mail'
+
+ def _postprocess_sent_message(self, cr, uid, mail, context=None, mail_sent=True):
+ if mail_sent and mail.model == 'sale.order':
+ so_obj = self.pool.get('sale.order')
+ order = so_obj.browse(cr, uid, mail.res_id, context=context)
+ partner = order.partner_id
+ # Add the customer in the SO as follower
+ if partner not in order.message_follower_ids:
+ so_obj.message_subscribe(cr, uid, [mail.res_id], [partner.id], context=context)
+ # Add all recipients of the email as followers
+ for p in mail.partner_ids:
+ if p not in order.message_follower_ids:
+ so_obj.message_subscribe(cr, uid, [mail.res_id], [p.id], context=context)
+ return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent)
diff --git a/addons/portal_sale/portal_sale.py b/addons/portal_sale/portal_sale.py
index 737896e6e50..2ac06c33123 100644
--- a/addons/portal_sale/portal_sale.py
+++ b/addons/portal_sale/portal_sale.py
@@ -121,21 +121,3 @@ class account_invoice(osv.Model):
if user.share:
return self.pool['ir.actions.act_window'].for_xml_id(cr, uid, 'portal_sale', 'portal_action_invoices', context=context)
return super(account_invoice, self).get_formview_action(cr, uid, id, context=context)
-
-
-class mail_mail(osv.osv):
- _inherit = 'mail.mail'
-
- def _postprocess_sent_message(self, cr, uid, mail, context=None, mail_sent=True):
- if mail_sent and mail.model == 'sale.order':
- so_obj = self.pool.get('sale.order')
- order = so_obj.browse(cr, uid, mail.res_id, context=context)
- partner = order.partner_id
- # Add the customer in the SO as follower
- if partner not in order.message_follower_ids:
- so_obj.message_subscribe(cr, uid, [mail.res_id], [partner.id], context=context)
- # Add all recipients of the email as followers
- for p in mail.partner_ids:
- if p not in order.message_follower_ids:
- so_obj.message_subscribe(cr, uid, [mail.res_id], [p.id], context=context)
- return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent)
diff --git a/addons/purchase/__init__.py b/addons/purchase/__init__.py
index 1c6dcaac111..e53ec6f2f7b 100644
--- a/addons/purchase/__init__.py
+++ b/addons/purchase/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+import mail_mail
import purchase
import partner
import stock
diff --git a/addons/purchase/mail_mail.py b/addons/purchase/mail_mail.py
new file mode 100644
index 00000000000..1bc9ec6017e
--- /dev/null
+++ b/addons/purchase/mail_mail.py
@@ -0,0 +1,13 @@
+from openerp.osv import osv
+
+
+class mail_mail(osv.Model):
+ _name = 'mail.mail'
+ _inherit = 'mail.mail'
+
+ def _postprocess_sent_message(self, cr, uid, mail, context=None, mail_sent=True):
+ if mail_sent and mail.model == 'purchase.order':
+ obj = self.pool.get('purchase.order').browse(cr, uid, mail.res_id, context=context)
+ if obj.state == 'draft':
+ self.pool.get('purchase.order').signal_workflow(cr, uid, [mail.res_id], 'send_rfq')
+ return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index c0cb5ea87ab..da3aa5f4a2b 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -1610,18 +1610,6 @@ class procurement_order(osv.osv):
return res
-class mail_mail(osv.Model):
- _name = 'mail.mail'
- _inherit = 'mail.mail'
-
- def _postprocess_sent_message(self, cr, uid, mail, context=None, mail_sent=True):
- if mail_sent and mail.model == 'purchase.order':
- obj = self.pool.get('purchase.order').browse(cr, uid, mail.res_id, context=context)
- if obj.state == 'draft':
- self.pool.get('purchase.order').signal_workflow(cr, uid, [mail.res_id], 'send_rfq')
- return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent)
-
-
class product_template(osv.Model):
_name = 'product.template'
_inherit = 'product.template'
diff --git a/addons/website_mail_group/models/__init__.py b/addons/website_mail_group/models/__init__.py
index ea8be51acde..b1eb0190d06 100644
--- a/addons/website_mail_group/models/__init__.py
+++ b/addons/website_mail_group/models/__init__.py
@@ -1 +1,2 @@
import mail_group
+import mail_mail
diff --git a/addons/website_mail_group/models/mail_group.py b/addons/website_mail_group/models/mail_group.py
index 36b4242cdb5..30e49f13d2d 100644
--- a/addons/website_mail_group/models/mail_group.py
+++ b/addons/website_mail_group/models/mail_group.py
@@ -27,35 +27,3 @@ class MailGroup(osv.Model):
})
res['headers'] = repr(headers)
return res
-
-
-class MailMail(osv.Model):
- _inherit = 'mail.mail'
-
- def send_get_mail_body(self, cr, uid, ids, partner=None, context=None):
- """ Short-circuit parent method for mail groups, replace the default
- footer with one appropriate for mailing-lists."""
- # TDE: temporary addition (mail was parameter) due to semi-new-API
- mail = self.browse(cr, uid, ids[0], context=context)
-
- if mail.model == 'mail.group' and mail.res_id:
- # no super() call on purpose, no private links that could be quoted!
- group = self.pool['mail.group'].browse(cr, uid, mail.res_id, context=context)
- base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
- vals = {
- 'maillist': _('Mailing-List'),
- 'post_to': _('Post to'),
- 'unsub': _('Unsubscribe'),
- 'mailto': 'mailto:%s@%s' % (group.alias_name, group.alias_domain),
- 'group_url': '%s/groups/%s' % (base_url, slug(group)),
- 'unsub_url': '%s/groups?unsubscribe' % (base_url,),
- }
- footer = """_______________________________________________
- %(maillist)s: %(group_url)s
- %(post_to)s: %(mailto)s
- %(unsub)s: %(unsub_url)s
- """ % vals
- body = tools.append_content_to_html(mail.body, footer, container_tag='div')
- return body
- else:
- return super(MailMail, self).send_get_mail_body(cr, uid, ids, partner=partner, context=context)
diff --git a/addons/website_mail_group/models/mail_mail.py b/addons/website_mail_group/models/mail_mail.py
new file mode 100644
index 00000000000..b6f6083638a
--- /dev/null
+++ b/addons/website_mail_group/models/mail_mail.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+from openerp.osv import osv
+from openerp import tools
+from openerp.tools.translate import _
+from openerp.addons.website.models.website import slug
+
+
+class MailMail(osv.Model):
+ _inherit = 'mail.mail'
+
+ def send_get_mail_body(self, cr, uid, ids, partner=None, context=None):
+ """ Short-circuit parent method for mail groups, replace the default
+ footer with one appropriate for mailing-lists."""
+ # TDE: temporary addition (mail was parameter) due to semi-new-API
+ mail = self.browse(cr, uid, ids[0], context=context)
+
+ if mail.model == 'mail.group' and mail.res_id:
+ # no super() call on purpose, no private links that could be quoted!
+ group = self.pool['mail.group'].browse(cr, uid, mail.res_id, context=context)
+ base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
+ vals = {
+ 'maillist': _('Mailing-List'),
+ 'post_to': _('Post to'),
+ 'unsub': _('Unsubscribe'),
+ 'mailto': 'mailto:%s@%s' % (group.alias_name, group.alias_domain),
+ 'group_url': '%s/groups/%s' % (base_url, slug(group)),
+ 'unsub_url': '%s/groups?unsubscribe' % (base_url,),
+ }
+ footer = """_______________________________________________
+ %(maillist)s: %(group_url)s
+ %(post_to)s: %(mailto)s
+ %(unsub)s: %(unsub_url)s
+ """ % vals
+ body = tools.append_content_to_html(mail.body, footer, container_tag='div')
+ return body
+ else:
+ return super(MailMail, self).send_get_mail_body(cr, uid, ids, partner=partner, context=context)