Tagging teammates with period in their username
parent
7cfa01c58f
commit
0b8f958a73
|
@ -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 = "@{}".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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue