From a08554f289e7c98f5a4045bc7cad1bec694f5be1 Mon Sep 17 00:00:00 2001 From: mein Name Date: Sun, 9 Mar 2025 23:00:35 -0400 Subject: [PATCH] add CW in review feed item title if spoliers detected in review content --- journal/models/renderers.py | 4 ++++ journal/views/review.py | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/journal/models/renderers.py b/journal/models/renderers.py index c685696e..d63aa951 100644 --- a/journal/models/renderers.py +++ b/journal/models/renderers.py @@ -50,6 +50,10 @@ def html_to_text(h: str) -> str: ) +def has_spoiler(s: str) -> bool: + return ">!" in s + + def _spolier(s: str) -> str: sl = s.split(">!", 1) if len(sl) == 1: diff --git a/journal/views/review.py b/journal/views/review.py index 3f4bfa1e..06f6330d 100644 --- a/journal/views/review.py +++ b/journal/views/review.py @@ -14,7 +14,7 @@ from django.views.decorators.http import require_http_methods from catalog.models import * from common.utils import AuthedHttpRequest, get_uuid_or_404 -from journal.models.renderers import convert_leading_space_in_md, render_md +from journal.models.renderers import convert_leading_space_in_md, has_spoiler, render_md from users.middlewares import activate_language_for_user from users.models.apidentity import APIdentity @@ -135,9 +135,12 @@ class ReviewFeed(Feed): return reviews def item_title(self, item: Review): - return _("{review_title} - a review of {item_title}").format( + s = _("{review_title} - a review of {item_title}").format( review_title=item.title, item_title=item.item.title ) + if has_spoiler(item.body): + s += " (" + _("may contain spoiler or triggering content") + ")" + return s def item_description(self, item: Review): target_html = (