Added option to display custom RSS feed also to super admins

This commit is contained in:
Antoine Nguyen
2025-07-27 10:18:21 +02:00
parent 81e38772f9
commit e64e6bb574
6 changed files with 23 additions and 4 deletions
+1
View File
@@ -145,6 +145,7 @@ class CoreGlobalParametersSerializer(serializers.Serializer):
rss_feed_url = serializers.URLField(
allow_blank=True, required=False, allow_null=True
)
show_rss_feed_to_superadmins = serializers.BooleanField(default=False)
hide_features_widget = serializers.BooleanField(default=False)
# Theme settings
+6
View File
@@ -592,6 +592,12 @@ class NewsFeedAPIViewTestCase(ModoAPITestCase):
self.assertEqual(response.status_code, 200)
self.assertIn("modoboa", response.json()[0]["link"])
# Try as superadmin and show_rss_feed_to_superadmins enabled
self.set_global_parameter("show_rss_feed_to_superadmins", True)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertIn("django", response.json()[0]["link"])
# Try as domainadmin
dadmin = models.User.objects.get(username="admin@test.com")
self.authenticate_user(dadmin)
+4 -1
View File
@@ -210,7 +210,10 @@ class NewsFeedAPIView(APIView):
def get(self, request, *args, **kwargs):
lang = "fr" if request.user.language == "fr" else "en"
feed_url = f"{MODOBOA_WEBSITE_URL}{lang}/weblog/feeds/"
if request.user.role != "SuperAdmins":
show_rss_feed_to_superadmins = request.localconfig.parameters.get_value(
"show_rss_feed_to_superadmins"
)
if request.user.role != "SuperAdmins" or show_rss_feed_to_superadmins:
custom_feed_url = request.localconfig.parameters.get_value("rss_feed_url")
if custom_feed_url:
feed_url = custom_feed_url
+12
View File
@@ -499,6 +499,18 @@ GLOBAL_PARAMETERS_STRUCT = collections.OrderedDict(
),
},
),
(
"show_rss_feed_to_superadmins",
{
"label": gettext_lazy(
"Display custom RSS feed to super admins"
),
"help_text": gettext_lazy(
"Display custom RSS feed also to super administrators"
),
"widget": "BooleanField",
},
),
(
"hide_features_widget",
{
-1
View File
@@ -22,7 +22,6 @@
{% block main_content %}{% endblock %}
</div>
</div>
<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
{% block extra_js %}{% endblock %}
</body>
</html>
-2
View File
@@ -1,7 +1,6 @@
from django.conf import settings
from django.contrib.auth import views as auth_views
from django.urls import include, path
from django.views.i18n import JavaScriptCatalog
from drf_spectacular.views import (
SpectacularJSONAPIView,
@@ -13,7 +12,6 @@ from modoboa.core import views as core_views
from modoboa.core.extensions import exts_pool
urlpatterns = [
path("jsi18n/", JavaScriptCatalog.as_view(), name="javascript-catalog"),
path("", include("modoboa.core.urls")),
path(
"accounts/password_reset/",