diff options
-rw-r--r-- | activities/models/hashtag.py | 6 | ||||
-rw-r--r-- | tests/core/test_html.py | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/activities/models/hashtag.py b/activities/models/hashtag.py index 7085b15..9cfb21d 100644 --- a/activities/models/hashtag.py +++ b/activities/models/hashtag.py @@ -123,7 +123,7 @@ class Hashtag(StatorModel): delete = "{edit}delete/" timeline = "/tags/{self.hashtag}/" - hashtag_regex = re.compile(r"((?:\B#)([a-zA-Z0-9(_)]{1,}\b))") + hashtag_regex = re.compile(r"\B#([a-zA-Z0-9(_)]+\b)(?!;)") def save(self, *args, **kwargs): self.hashtag = self.hashtag.lstrip("#") @@ -182,7 +182,7 @@ class Hashtag(StatorModel): @classmethod def linkify_hashtags(cls, content) -> str: def replacer(match): - hashtag = match.group() - return f'<a class="hashtag" href="/tags/{hashtag.lstrip("#").lower()}/">{hashtag}</a>' + hashtag = match.group(1) + return f'<a class="hashtag" href="/tags/{hashtag.lower()}/">#{hashtag}</a>' return mark_safe(Hashtag.hashtag_regex.sub(replacer, content)) diff --git a/tests/core/test_html.py b/tests/core/test_html.py index 012a0ce..d4c74dc 100644 --- a/tests/core/test_html.py +++ b/tests/core/test_html.py @@ -1,4 +1,4 @@ -from core.html import html_to_plaintext +from core.html import html_to_plaintext, sanitize_post def test_html_to_plaintext(): @@ -13,3 +13,9 @@ def test_html_to_plaintext(): html_to_plaintext("<p>Hi!</p>\n\n<p>How are<br> you?</p><p>today</p>") == "Hi!\n\nHow are\n you?\n\ntoday" ) + + +def test_sanitize_post(): + + assert sanitize_post("<p>Hello!</p>") == "<p>Hello!</p>" + assert sanitize_post("<p>It's great</p>") == "<p>It's great</p>" |