summaryrefslogtreecommitdiff
path: root/addons/website_mail/models
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2014-03-04 12:29:57 +0100
committerThibault Delavallée <tde@openerp.com>2014-03-04 12:29:57 +0100
commitdb2bdee34349f5ceef06cbdde247c66fd001c18a (patch)
treebdc7f454c50030c407ead8ef066fb89939218ee5 /addons/website_mail/models
parente78a3b18cc6c049a712d594ab70287c486447f0a (diff)
parentd417da6c1a64c6c51aa2c734e31e1360ad4f434e (diff)
MERGE] [FIX] email_template: fix relative -> absolute url conversion
Local URLs are converted into absolute URLs, notably because when using the email designer, images are added using local URLs. Previously to this fix the template was analyzed to find local URLs and make them absolute. However this causes 2 issues : - mako-based URLs are broken because a scheme is added before the mako that generated the image src - when changing the base url, the templates are not updated The URLs are now converted dynamically when generating the content of the html. This is done by passing a new parameter that enable the post processing of the generated content. Also fixed double body generation when using templates; fields parameter was not propagated correctly. bzr revid: tde@openerp.com-20140304112957-l9b10gyjqphs5fgc
Diffstat (limited to 'addons/website_mail/models')
-rw-r--r--addons/website_mail/models/email_template.py52
1 files changed, 0 insertions, 52 deletions
diff --git a/addons/website_mail/models/email_template.py b/addons/website_mail/models/email_template.py
index aed01c179f7..beb02739f29 100644
--- a/addons/website_mail/models/email_template.py
+++ b/addons/website_mail/models/email_template.py
@@ -19,9 +19,6 @@
#
##############################################################################
-import lxml
-import urlparse
-
from openerp.osv import osv, fields
from openerp.tools.translate import _
@@ -39,52 +36,3 @@ class EmailTemplate(osv.Model):
help='Link to the website',
),
}
-
- def _postprocess_html_replace_links(self, cr, uid, body_html, context=None):
- """ Post-processing of body_html. Indeed the content generated by the
- website builder contains references to local addresses, for example
- for images. This method changes those addresses to absolute addresses. """
- html = body_html
- if not body_html:
- return html
-
- # form a tree
- root = lxml.html.fromstring(html)
- if not len(root) and root.text is None and root.tail is None:
- html = '<div>%s</div>' % html
- root = lxml.html.fromstring(html)
-
- base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
- (base_scheme, base_netloc, bpath, bparams, bquery, bfragment) = urlparse.urlparse(base_url)
-
- def _process_link(url):
- new_url = url
- (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url)
- if not scheme and not netloc:
- new_url = urlparse.urlunparse((base_scheme, base_netloc, path, params, query, fragment))
- return new_url
-
- # check all nodes, replace :
- # - img src -> check URL
- # - a href -> check URL
- for node in root.iter():
- if node.tag == 'a':
- node.set('href', _process_link(node.get('href')))
- elif node.tag == 'img' and not node.get('src', 'data').startswith('data'):
- node.set('src', _process_link(node.get('src')))
-
- html = lxml.html.tostring(root, pretty_print=False, method='html')
- # this is ugly, but lxml/etree tostring want to put everything in a 'div' that breaks the editor -> remove that
- if html.startswith('<div>') and html.endswith('</div>'):
- html = html[5:-6]
- return html
-
- def create(self, cr, uid, values, context=None):
- if 'body_html' in values:
- values['body_html'] = self._postprocess_html_replace_links(cr, uid, values['body_html'], context=context)
- return super(EmailTemplate, self).create(cr, uid, values, context=context)
-
- def write(self, cr, uid, ids, values, context=None):
- if 'body_html' in values:
- values['body_html'] = self._postprocess_html_replace_links(cr, uid, values['body_html'], context=context)
- return super(EmailTemplate, self).write(cr, uid, ids, values, context=context)