Tagging teammates with period in their username

remotes/origin/enhancement/email-actions
Alejandro Alonso 2015-06-02 14:55:37 +02:00 committed by David Barragán Merino
parent 7cfa01c58f
commit 0b8f958a73
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