diff options
| -rw-r--r-- | addons/mass_mailing/models/mail_mail.py | 19 | ||||
| -rw-r--r-- | addons/mass_mailing/models/mass_mailing.py | 24 | ||||
| -rw-r--r-- | addons/portal_sale/__init__.py | 1 | ||||
| -rw-r--r-- | addons/portal_sale/mail_mail.py | 19 | ||||
| -rw-r--r-- | addons/portal_sale/portal_sale.py | 18 | ||||
| -rw-r--r-- | addons/purchase/__init__.py | 1 | ||||
| -rw-r--r-- | addons/purchase/mail_mail.py | 13 | ||||
| -rw-r--r-- | addons/purchase/purchase.py | 12 | ||||
| -rw-r--r-- | addons/website_mail_group/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website_mail_group/models/mail_group.py | 32 | ||||
| -rw-r--r-- | addons/website_mail_group/models/mail_mail.py | 38 |
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) |
