summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Godwin2022-11-28 22:34:14 -0700
committerAndrew Godwin2022-11-28 22:34:14 -0700
commitfb342cfb5488d3e6d1c0c13d5454b6fb3c2a6dbf (patch)
tree244b2460738108f4e3b7bd98f64ac26f04fa43bf
parent4420507f62bffd38ed9e8ce31a11fa002756143d (diff)
downloadtakahe-fb342cfb5488d3e6d1c0c13d5454b6fb3c2a6dbf.tar.gz
takahe-fb342cfb5488d3e6d1c0c13d5454b6fb3c2a6dbf.tar.bz2
takahe-fb342cfb5488d3e6d1c0c13d5454b6fb3c2a6dbf.zip
Fix hashtagging of HTML entities
-rw-r--r--activities/models/hashtag.py6
-rw-r--r--tests/core/test_html.py8
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&#39;s great</p>") == "<p>It&#39;s great</p>"