Merge pull request #344 from taigaio/Issue-2781-tagging-teammates-with-period-in-their-username
Tagging teammates with period in their usernameremotes/origin/enhancement/email-actions
commit
369f247d9d
|
@ -25,22 +25,22 @@
|
|||
|
||||
from markdown.extensions import Extension
|
||||
from markdown.inlinepatterns import Pattern
|
||||
from markdown.util import etree
|
||||
from markdown.util import etree, AtomicString
|
||||
|
||||
from taiga.users.models import User
|
||||
|
||||
|
||||
class MentionsExtension(Extension):
|
||||
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.md = md
|
||||
md.inlinePatterns.add('mentions', mentionsPattern, '_begin')
|
||||
md.inlinePatterns.add('mentions', mentionsPattern, '_end')
|
||||
|
||||
|
||||
class MentionsPattern(Pattern):
|
||||
def handleMatch(self, m):
|
||||
username = m.group(2)
|
||||
username = m.group(3)
|
||||
|
||||
try:
|
||||
user = User.objects.get(username=username)
|
||||
|
@ -49,10 +49,11 @@ class MentionsPattern(Pattern):
|
|||
|
||||
url = "/profile/{}".format(username)
|
||||
|
||||
link_text = "@{}".format(username)
|
||||
link_text = "@{}".format(username)
|
||||
|
||||
a = etree.Element('a')
|
||||
a.text = link_text
|
||||
a.text = AtomicString(link_text)
|
||||
|
||||
a.set('href', url)
|
||||
a.set('title', user.get_full_name())
|
||||
a.set('class', "mention")
|
||||
|
|
|
@ -46,3 +46,8 @@ def test_render_and_extract_mentions():
|
|||
user = factories.UserFactory(username="user1", full_name="test")
|
||||
(_, extracted) = render_and_extract(dummy_project, "**@user1**")
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue