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>"  | 
