—
{self.item.display_title} {self.progress_display}\n
", "
" + raw_prepend_content, 1) + content = ( + parser.html.replace("
", "
" + raw_prepend_content, 1) + + raw_append_content + ) hashtags = ( sorted([tag[: Hashtag.MAXIMUM_LENGTH] for tag in parser.hashtags]) or None @@ -1158,8 +1162,9 @@ class Post(models.Model): def edit_local( self, - raw_prepend_content: str, content: str, + raw_prepend_content: str, + raw_append_content: str, summary: str | None = None, sensitive: bool | None = None, visibility: int = Visibilities.public, @@ -1172,7 +1177,10 @@ class Post(models.Model): with transaction.atomic(): # Strip all HTML and apply linebreaks filter parser = FediverseHtmlParser(linebreaks_filter(content), find_hashtags=True) - self.content = parser.html.replace("
", "
" + raw_prepend_content, 1) + self.content = ( + parser.html.replace("
", "
" + raw_prepend_content, 1)
+ + raw_append_content
+ )
self.hashtags = (
sorted([tag[: Hashtag.MAXIMUM_LENGTH] for tag in parser.hashtags])
or None
diff --git a/takahe/utils.py b/takahe/utils.py
index 84422025..0649e962 100644
--- a/takahe/utils.py
+++ b/takahe/utils.py
@@ -444,7 +444,8 @@ class Takahe:
author_pk: int,
content: str,
visibility: Visibilities,
- pre_conetent: str = "",
+ prepend_content: str = "",
+ append_content: str = "",
summary: str | None = None,
sensitive: bool = False,
data: dict | None = None,
@@ -469,8 +470,9 @@ class Takahe:
raise ValueError(f"Cannot find post to reply: {reply_to_pk}")
if post:
post.edit_local(
- pre_conetent,
content,
+ prepend_content,
+ append_content,
summary,
sensitive,
visibility=visibility,
@@ -482,8 +484,9 @@ class Takahe:
else:
post = Post.create_local(
identity,
- pre_conetent,
content,
+ prepend_content,
+ append_content,
summary,
sensitive,
visibility=visibility,
@@ -589,7 +592,7 @@ class Takahe:
return existing_post
action = _("created collection")
item_link = collection.absolute_url
- pre_conetent = f'{action} {collection.title}
'
+ prepend_content = f'{action} {collection.title}
'
content = collection.plain_content
if len(content) > 360:
content = content[:357] + "..."
@@ -603,7 +606,8 @@ class Takahe:
collection.owner.pk,
content,
visibility,
- pre_conetent,
+ prepend_content,
+ "",
None,
False,
data,
@@ -622,7 +626,7 @@ class Takahe:
user = mark.owner.user
stars = _rating_to_emoji(mark.rating_grade, 1)
item_link = f"{settings.SITE_INFO['site_url']}/~neodb~{mark.item.url}"
- pre_conetent = mark.get_action_for_feed(item_link=item_link)
+ prepend_content = mark.get_action_for_feed(item_link=item_link)
spoiler, txt = Takahe.get_spoiler_text(mark.comment_text, mark.item)
content = f"{stars} \n{txt}\n{mark.tag_text}"
data = {
@@ -647,7 +651,8 @@ class Takahe:
mark.owner.pk,
content + append_content,
v,
- pre_conetent,
+ prepend_content,
+ "",
spoiler,
spoiler is not None,
data,
diff --git a/users/middlewares.py b/users/middlewares.py
index defe2460..ce9a1735 100644
--- a/users/middlewares.py
+++ b/users/middlewares.py
@@ -3,14 +3,21 @@ from django.middleware.locale import LocaleMiddleware
from django.utils import translation
+def activate_language_for_user(user, request=None):
+ user_language = None
+ if user and user.is_authenticated:
+ user_language = getattr(user, "language", "")
+ if not user_language:
+ if request:
+ user_language = translation.get_language_from_request(request)
+ else:
+ user_language = settings.LANGUAGE_CODE
+ # if user_language in dict(settings.LANGUAGES).keys():
+ translation.activate(user_language)
+ return translation.get_language()
+
+
class LanguageMiddleware(LocaleMiddleware):
def process_request(self, request):
- user_language = None
user = getattr(request, "user", None)
- if user and user.is_authenticated:
- user_language = getattr(user, "language", "")
- if not user_language:
- user_language = translation.get_language_from_request(request)
- # if user_language in dict(settings.LANGUAGES).keys():
- translation.activate(user_language)
- request.LANGUAGE_CODE = translation.get_language()
+ request.LANGUAGE_CODE = activate_language_for_user(user, request)