You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2017/07/06 19:51:33 UTC
[2/2] allura git commit: [#7896] strip out HTML already generated by
markdown in multi-step commit email situation
[#7896] strip out HTML already generated by markdown in multi-step commit email situation
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/adf67f5d
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/adf67f5d
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/adf67f5d
Branch: refs/heads/db/8157
Commit: adf67f5d7fd0b6973d8c907583e39ef7d64fe88c
Parents: a113534
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Jul 6 13:48:15 2017 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Jul 6 15:51:12 2017 -0400
----------------------------------------------------------------------
Allura/allura/tasks/mail_tasks.py | 13 +++++
ForgeGit/forgegit/data/post-receive_tmpl | 0
.../21/9eee531d76e32cce4e04badc4e821fbfba0d33 | Bin 0 -> 218 bytes
.../b8/5dfbec3a5d08677bdd402fc0338934f623a234 | Bin 0 -> 217 bytes
.../f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 | Bin 0 -> 29 bytes
.../data/weird-chars.git/refs/heads/master | 2 +-
.../forgegit/tests/model/test_repository.py | 49 +++++++++++++++++++
rat-excludes.txt | 1 -
8 files changed, 63 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/Allura/allura/tasks/mail_tasks.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tasks/mail_tasks.py b/Allura/allura/tasks/mail_tasks.py
index 16c2f1f..a5af0a6 100644
--- a/Allura/allura/tasks/mail_tasks.py
+++ b/Allura/allura/tasks/mail_tasks.py
@@ -17,9 +17,11 @@
import logging
import HTMLParser
+import re
from pylons import tmpl_context as c, app_globals as g, config
from bson import ObjectId
+import markupsafe
from allura.lib import helpers as h
from allura.lib.decorators import task
@@ -111,7 +113,18 @@ def create_multipart_msg(text, metalink=None):
:return:
"""
+ def replace_html(matchobj):
+ text_within_div = matchobj.group(1)
+ text_within_div = text_within_div.replace('</p>', '\n')
+ text_within_div = markupsafe._striptags_re.sub('', text_within_div)
+ return text_within_div
+
plain_text = text
+ plain_text = re.sub(r'<div class="markdown_content">(.*)</div>', # strip HTML from markdown generated blocks
+ replace_html,
+ plain_text,
+ flags=re.DOTALL, # match newlines too
+ )
plain_text = HTMLParser.HTMLParser().unescape(plain_text) # put literal HTML tags back into plaintext
plain_msg = mail_util.encode_email_part(plain_text, 'plain')
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/data/post-receive_tmpl
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/data/post-receive_tmpl b/ForgeGit/forgegit/data/post-receive_tmpl
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/tests/data/weird-chars.git/objects/21/9eee531d76e32cce4e04badc4e821fbfba0d33
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/21/9eee531d76e32cce4e04badc4e821fbfba0d33 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/21/9eee531d76e32cce4e04badc4e821fbfba0d33
new file mode 100644
index 0000000..e85399a
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/21/9eee531d76e32cce4e04badc4e821fbfba0d33 differ
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b8/5dfbec3a5d08677bdd402fc0338934f623a234
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b8/5dfbec3a5d08677bdd402fc0338934f623a234 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b8/5dfbec3a5d08677bdd402fc0338934f623a234
new file mode 100644
index 0000000..e913060
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b8/5dfbec3a5d08677bdd402fc0338934f623a234 differ
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/tests/data/weird-chars.git/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7
new file mode 100644
index 0000000..c08ecd5
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 differ
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master b/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
index 20663de..81ca180 100644
--- a/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
+++ b/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
@@ -1 +1 @@
-616d24f8dd4e95cadd8e93df5061f09855d1a066
+b85dfbec3a5d08677bdd402fc0338934f623a234
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/ForgeGit/forgegit/tests/model/test_repository.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index 8dbf931..222a11f 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -434,6 +434,54 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase):
assert n.text.startswith('\n## Branch: master'), n.text
assert n.text.endswith('And 1 more commits.\n'), n.text
+ @td.with_tool('test', 'Git', 'weird-chars', 'WeirdChars', type='git')
+ def _setup_weird_chars_repo(self):
+ h.set_context('test', 'weird-chars', neighborhood='Projects')
+ repo_dir = pkg_resources.resource_filename('forgegit', 'tests/data')
+ c.app.repo.fs_path = repo_dir
+ c.app.repo.status = 'ready'
+ c.app.repo.name = 'weird-chars.git'
+ ThreadLocalORMSession.flush_all()
+ c.app.repo.refresh()
+
+ def test_notification_html_and_plaintext(self):
+ M.MonQTask.query.remove({}) # remove other stuff from setup()
+ self._setup_weird_chars_repo()
+
+ with mock.patch('allura.tasks.mail_tasks.smtp_client.sendmail') as sendmail:
+ while M.MonQTask.run_ready(): # have to run them all multiple times since one task creates another
+ pass
+ text_msg = sendmail.call_args_list[1][0][6]
+ html_msg = sendmail.call_args_list[2][0][6]
+ text_body = text_msg.get_payload(decode=True)
+ html_body = html_msg.get_payload(decode=True)
+
+ # no extra HTML in commit messages
+ assert_in('''-----
+
+Add foo.txt. Commit ref [616d24f8dd4e95cadd8e93df5061f09855d1a066] *bold* <b>bold</b>
+
+* one
+* two
+* three
+
+http://example.com/
+
+By Dave Brondsema''', text_body)
+ # these bracketed links could look like HTML tags, ensure they don't get removed
+ assert_in('further messages, please visit <http://localhost:8080/auth/subscriptions/>', text_body)
+
+ # limited markdown handling of commit messages (see `markdown_commit`)
+ # and HTML escaped
+ assert_in('''<hr/>
+<div class="markdown_content"><p>Add foo.txt. Commit ref <a class="alink" href="http://localhost:8080/p/test/weird-chars/ci/616d24f8dd4e95cadd8e93df5061f09855d1a066/">[616d24f8dd4e95cadd8e93df5061f09855d1a066]</a> *bold* <b>bold</b></p>
+<p>* one<br/>
+* two<br/>
+* three</p>
+<p>http://example.com/</p></div>
+
+<p>By Dave Brondsema''', html_body)
+
def test_tarball(self):
tmpdir = tg.config['scm.repos.tarball.root']
if os.path.isfile(os.path.join(tmpdir, "git/t/te/test/testgit.git/test-src-git-HEAD.zip")):
@@ -895,6 +943,7 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase):
tags = rev._impl._get_refs('tags')
assert_equal(rev.cached_tags, tags)
+
class TestGitImplementation(unittest.TestCase):
def test_branches(self):
http://git-wip-us.apache.org/repos/asf/allura/blob/adf67f5d/rat-excludes.txt
----------------------------------------------------------------------
diff --git a/rat-excludes.txt b/rat-excludes.txt
index d36e26e..6397d06 100644
--- a/rat-excludes.txt
+++ b/rat-excludes.txt
@@ -59,7 +59,6 @@ Allura/docs/Makefile
Allura/docs/_build/
Allura/run/dummy.txt
CHANGES
-ForgeGit/forgegit/data/post-receive_tmpl
ForgeImporters/docs/make.bat
ForgeImporters/docs/Makefile
ForgeImporters/forgeimporters/trac/tests/data/test-list.csv