From a58419378f5e938eac6fba3602ce8bba84930d1e Mon Sep 17 00:00:00 2001 From: Andy Byers Date: Mon, 9 Mar 2026 13:57:32 +0000 Subject: [PATCH 1/3] feat: adds setting to disable RSS feeds. (#2499) --- src/core/logic.py | 1 + .../admin/elements/forms/group_journal.html | 3 +++ src/themes/OLH/templates/core/base.html | 6 ++++-- src/themes/clean/templates/core/base.html | 2 ++ src/themes/material/templates/core/base.html | 2 +- src/utils/install/journal_defaults.json | 19 +++++++++++++++++++ 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/core/logic.py b/src/core/logic.py index 85479724e1..8176f1da36 100755 --- a/src/core/logic.py +++ b/src/core/logic.py @@ -653,6 +653,7 @@ def get_settings_to_edit(display_group, journal, user): "replyto_address", "use_credit", "a11y_public_info", + "feeds", ] group_of_settings = process_setting_list(journal_settings, "general", journal) diff --git a/src/templates/admin/elements/forms/group_journal.html b/src/templates/admin/elements/forms/group_journal.html index fda36f8cc1..cc64ecb0dd 100644 --- a/src/templates/admin/elements/forms/group_journal.html +++ b/src/templates/admin/elements/forms/group_journal.html @@ -91,6 +91,9 @@

Other

If you want to toggle CRediT support, you can do so here.

{% include "admin/elements/forms/field.html" with field=edit_form.display_use_credit %} {% include "admin/elements/forms/field.html" with field=edit_form.use_credit %} + +

When enabled, RSS and Atom feed links are included in the journal's page headers.

+ {% include "admin/elements/forms/field.html" with field=edit_form.feeds %} {% if request.press.allow_journal_a11y_info %} diff --git a/src/themes/OLH/templates/core/base.html b/src/themes/OLH/templates/core/base.html index a94a7344e7..7d1a9fe537 100644 --- a/src/themes/OLH/templates/core/base.html +++ b/src/themes/OLH/templates/core/base.html @@ -38,8 +38,10 @@ {% hook 'base_head_css' %} {% if request.journal %} - - + {% if journal_settings.general.feeds %} + + + {% endif %} {% else %} diff --git a/src/themes/clean/templates/core/base.html b/src/themes/clean/templates/core/base.html index 14d19be1b3..bbb8da4588 100644 --- a/src/themes/clean/templates/core/base.html +++ b/src/themes/clean/templates/core/base.html @@ -14,9 +14,11 @@ {% block head %}{% endblock head %} + {% if not request.journal or journal_settings.general.feeds %} + {% endif %} {% include "common/elements/favicons.html" %} - {% if request.journal %} + {% if request.journal and journal_settings.general.feeds %} Date: Mon, 9 Mar 2026 14:01:01 +0000 Subject: [PATCH 2/3] chroe: tweak wording to match style guide for settings. --- src/utils/install/journal_defaults.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/install/journal_defaults.json b/src/utils/install/journal_defaults.json index d8c552482e..623e9ace5b 100644 --- a/src/utils/install/journal_defaults.json +++ b/src/utils/install/journal_defaults.json @@ -5621,7 +5621,7 @@ "name": "general" }, "setting": { - "description": "When enabled, RSS and Atom feed links are included in the journal's page headers.", + "description": "RSS and Atom feed links in the journal's page headers.", "is_translatable": false, "name": "feeds", "pretty_name": "RSS/Atom Feeds", From f190fde2efac21720cdc1d7a8a46279065abf9d5 Mon Sep 17 00:00:00 2001 From: Andy Byers Date: Thu, 12 Mar 2026 10:35:26 +0000 Subject: [PATCH 3/3] chore: format files using ruff 0.15 --- src/core/logic.py | 19 ++++++++++++------- src/review/forms.py | 4 ++-- src/submission/forms.py | 4 ++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/core/logic.py b/src/core/logic.py index 8176f1da36..44936a2eba 100755 --- a/src/core/logic.py +++ b/src/core/logic.py @@ -1036,22 +1036,27 @@ def password_policy_check(request): password = request.POST.get("password_1") rules = [ - lambda s: len(password) >= request.press.password_length - or _("Your password must be {} characters long").format( - request.press.password_length + lambda s: ( + len(password) >= request.press.password_length + or _("Your password must be {} characters long").format( + request.press.password_length + ) ) ] if request.press.password_upper: rules.append( - lambda password: any(x.isupper() for x in password) - or _("An uppercase character is required") + lambda password: ( + any(x.isupper() for x in password) + or _("An uppercase character is required") + ) ) if request.press.password_number: rules.append( - lambda password: any(x.isdigit() for x in password) - or _("A number is required") + lambda password: ( + any(x.isdigit() for x in password) or _("A number is required") + ) ) problems = [p for p in [r(password) for r in rules] if p != True] diff --git a/src/review/forms.py b/src/review/forms.py index 9c838406d1..99835891f5 100755 --- a/src/review/forms.py +++ b/src/review/forms.py @@ -39,8 +39,8 @@ def __init__(self, *args, **kwargs): self.fields["decision"].widget.attrs["onchange"] = "decision_change()" self.fields["decision"].widget.attrs["onfocus"] = "store_previous_decision()" self.fields["editor"].queryset = editors - self.fields["editor"].label_from_instance = ( - lambda obj: f"{obj.full_name()} ({obj.email})" + self.fields["editor"].label_from_instance = lambda obj: ( + f"{obj.full_name()} ({obj.email})" ) if not newly_created: self.fields["message_to_editor"].widget = forms.HiddenInput() diff --git a/src/submission/forms.py b/src/submission/forms.py index 0406bb6ea5..7c3fa26b13 100755 --- a/src/submission/forms.py +++ b/src/submission/forms.py @@ -286,8 +286,8 @@ class EditorArticleInfoSubmit(ArticleInfo): def __init__(self, *args, **kwargs): super(EditorArticleInfoSubmit, self).__init__(*args, **kwargs) if self.fields.get("section"): - self.fields["section"].label_from_instance = ( - lambda obj: obj.display_name_public_submission + self.fields["section"].label_from_instance = lambda obj: ( + obj.display_name_public_submission ) self.fields["section"].help_text = ( "As an editor you will see all "