[MERGE] tools mail: Return the initial variable if is false or if is not an instance of basestring. Remove encoding attribute in html tags.
bzr revid: chm@openerp.com-20121221083527-py3wr2syz5d8igv8
This commit is contained in:
@@ -177,6 +177,10 @@ class TestCleaner(unittest2.TestCase):
|
||||
new_html = html_email_clean(False)
|
||||
self.assertEqual(new_html, False, 'html_email_cleaner did change a False in an other value.')
|
||||
|
||||
# Test6: Message with xml and doctype tags don't crash
|
||||
new_html = html_email_clean(u'<?xml version="1.0" encoding="iso-8859-1"?>\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n <head>\n <title>404 - Not Found</title>\n </head>\n <body>\n <h1>404 - Not Found</h1>\n </body>\n</html>\n')
|
||||
self.assertNotIn('encoding', new_html, 'html_email_cleaner did not remove correctly encoding attributes')
|
||||
|
||||
class TestHtmlTools(unittest2.TestCase):
|
||||
""" Test some of our generic utility functions about html """
|
||||
|
||||
|
||||
@@ -130,11 +130,15 @@ def html_email_clean(html):
|
||||
dest += source[idx:]
|
||||
return dest
|
||||
|
||||
if not html:
|
||||
if not html or not isinstance(html, basestring):
|
||||
return html
|
||||
|
||||
html = ustr(html)
|
||||
|
||||
# 0. remove encoding attribute inside tags
|
||||
doctype = re.compile(r'(<[^>]*\s)(encoding=(["\'][^"\']*?["\']|[^\s\n\r>]+)(\s[^>]*|/)?>)', re.IGNORECASE | re.DOTALL)
|
||||
html = doctype.sub(r"", html)
|
||||
|
||||
# 1. <br[ /]> -> \n, because otherwise the tree is obfuscated
|
||||
br_tags = re.compile(r'([<]\s*[bB][rR]\s*\/?[>])')
|
||||
html = _replace_matching_regex(br_tags, html, '__BR_TAG__')
|
||||
|
||||
Reference in New Issue
Block a user