summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Godwin2022-12-05 20:26:21 -0700
committerAndrew Godwin2022-12-05 20:26:21 -0700
commit5b82c76defd8016df137087e5ce55b44cf017399 (patch)
treeff96b3a84622219130ec0d46a1b52566b3d6b3c6
parent9fe2e6676c32b93023ae301be587a8ab0d93120f (diff)
downloadtakahe-5b82c76defd8016df137087e5ce55b44cf017399.tar.gz
takahe-5b82c76defd8016df137087e5ce55b44cf017399.tar.bz2
takahe-5b82c76defd8016df137087e5ce55b44cf017399.zip
Shorten mention names when linkified
Fixes #121
-rw-r--r--activities/models/post.py6
-rw-r--r--tests/activities/models/test_post.py9
2 files changed, 8 insertions, 7 deletions
diff --git a/activities/models/post.py b/activities/models/post.py
index 5ca5a1b..daf61e8 100644
--- a/activities/models/post.py
+++ b/activities/models/post.py
@@ -279,8 +279,12 @@ class Post(StatorModel):
def replacer(match):
precursor = match.group(1)
handle = match.group(2).lower()
+ if "@" in handle:
+ short_handle = handle.split("@", 1)[0]
+ else:
+ short_handle = handle
if handle in possible_matches:
- return f'{precursor}<a href="{possible_matches[handle]}">@{handle}</a>'
+ return f'{precursor}<a href="{possible_matches[handle]}">@{short_handle}</a>'
else:
return match.group()
diff --git a/tests/activities/models/test_post.py b/tests/activities/models/test_post.py
index 00db61b..06d26ed 100644
--- a/tests/activities/models/test_post.py
+++ b/tests/activities/models/test_post.py
@@ -56,7 +56,7 @@ def test_linkify_mentions_remote(identity, remote_identity):
post.mentions.add(identity)
assert (
post.safe_content_remote()
- == '<p><a href="https://example.com/@test/">@test@example.com</a>, welcome!</p>'
+ == '<p><a href="https://example.com/@test/">@test</a>, welcome!</p>'
)
# Test that they don't get touched without a mention
post = Post.objects.create(
@@ -103,7 +103,7 @@ def test_linkify_mentions_local(identity, remote_identity):
post.mentions.add(identity)
assert (
post.safe_content_local()
- == '<p><a href="/@test@example.com/">@test@example.com</a>, welcome!</p>'
+ == '<p><a href="/@test@example.com/">@test</a>, welcome!</p>'
)
# Test a full username (remote) with no <p>
post = Post.objects.create(
@@ -112,10 +112,7 @@ def test_linkify_mentions_local(identity, remote_identity):
local=True,
)
post.mentions.add(remote_identity)
- assert (
- post.safe_content_local()
- == '<a href="/@test@remote.test/">@test@remote.test</a> hello!'
- )
+ assert post.safe_content_local() == '<a href="/@test@remote.test/">@test</a> hello!'
# Test that they don't get touched without a mention
post = Post.objects.create(
content="<p>@test@example.com, welcome!</p>",