Merge pull request #344 from taigaio/Issue-2781-tagging-teammates-with-period-in-their-username

Tagging teammates with period in their username
remotes/origin/enhancement/email-actions
David Barragán Merino 2015-06-03 13:52:09 +02:00
commit 369f247d9d
2 changed files with 12 additions and 6 deletions

View File

@ -25,22 +25,22 @@
from markdown.extensions import Extension from markdown.extensions import Extension
from markdown.inlinepatterns import Pattern from markdown.inlinepatterns import Pattern
from markdown.util import etree from markdown.util import etree, AtomicString
from taiga.users.models import User from taiga.users.models import User
class MentionsExtension(Extension): class MentionsExtension(Extension):
def extendMarkdown(self, md, md_globals): def extendMarkdown(self, md, md_globals):
MENTION_RE = r'(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9-]+)' MENTION_RE = r'(@)([a-z0-9.-\.]+)'
mentionsPattern = MentionsPattern(MENTION_RE) mentionsPattern = MentionsPattern(MENTION_RE)
mentionsPattern.md = md mentionsPattern.md = md
md.inlinePatterns.add('mentions', mentionsPattern, '_begin') md.inlinePatterns.add('mentions', mentionsPattern, '_end')
class MentionsPattern(Pattern): class MentionsPattern(Pattern):
def handleMatch(self, m): def handleMatch(self, m):
username = m.group(2) username = m.group(3)
try: try:
user = User.objects.get(username=username) user = User.objects.get(username=username)
@ -49,10 +49,11 @@ class MentionsPattern(Pattern):
url = "/profile/{}".format(username) url = "/profile/{}".format(username)
link_text = "&commat;{}".format(username) link_text = "@{}".format(username)
a = etree.Element('a') a = etree.Element('a')
a.text = link_text a.text = AtomicString(link_text)
a.set('href', url) a.set('href', url)
a.set('title', user.get_full_name()) a.set('title', user.get_full_name())
a.set('class', "mention") a.set('class', "mention")

View File

@ -46,3 +46,8 @@ def test_render_and_extract_mentions():
user = factories.UserFactory(username="user1", full_name="test") user = factories.UserFactory(username="user1", full_name="test")
(_, extracted) = render_and_extract(dummy_project, "**@user1**") (_, extracted) = render_and_extract(dummy_project, "**@user1**")
assert extracted['mentions'] == [user] assert extracted['mentions'] == [user]
def test_proccessor_valid_email():
result = render(dummy_project, "**beta.tester@taiga.io**")
expected_result = "<p><strong><a href=\"mailto:beta.tester@taiga.io\" target=\"_blank\">beta.tester@taiga.io</a></strong></p>"
assert result == expected_result