From c3f8e6400ebb0685b7ddacf7c87ed49e08e644cb Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 10 Mar 2017 11:39:58 +0100 Subject: [PATCH] Custom news for resellers and domain admins. see #1047 --- modoboa/core/app_settings.py | 10 ++++++++++ modoboa/core/tests/test_views.py | 12 ++++++++++++ modoboa/core/views/dashboard.py | 9 +++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/modoboa/core/app_settings.py b/modoboa/core/app_settings.py index d477d1879..6485fd26c 100644 --- a/modoboa/core/app_settings.py +++ b/modoboa/core/app_settings.py @@ -215,6 +215,16 @@ class GeneralParametersForm(param_forms.AdminParametersForm): required=False ) + dash_sep = SeparatorField(label=ugettext_lazy("Dashboard")) + + news_url = forms.URLField( + label=ugettext_lazy("Custom news url"), + required=False, + help_text=ugettext_lazy( + "Display custom news for resellers and domain administrators" + ) + ) + notif_sep = SeparatorField(label=ugettext_lazy("Notifications")) sender_address = lib_fields.UTF8EmailField( diff --git a/modoboa/core/tests/test_views.py b/modoboa/core/tests/test_views.py index cf0711ef4..a1d1e0801 100644 --- a/modoboa/core/tests/test_views.py +++ b/modoboa/core/tests/test_views.py @@ -62,6 +62,18 @@ class DashboardTestCase(ModoTestCase): response = self.client.get(url) self.assertEqual(response.status_code, 302) + def test_custom_news(self): + """Check that custom news are displayed.""" + url = reverse("core:dashboard") + response = self.client.get(url) + self.assertContains(response, "https://modoboa.org") + + self.set_global_parameter( + "news_url", "https://www.djangoproject.com/rss/weblog/") + self.client.force_login(self.dadmin) + response = self.client.get(url) + self.assertContains(response, "djangoproject") + def test_root_dispatch(self): """Check root dispatching.""" url = reverse("core:root") diff --git a/modoboa/core/views/dashboard.py b/modoboa/core/views/dashboard.py index 71ef3e159..f1d41d380 100644 --- a/modoboa/core/views/dashboard.py +++ b/modoboa/core/views/dashboard.py @@ -37,8 +37,13 @@ class DashboardView(auth_mixins.AccessMixin, generic.TemplateView): lang = "en" context.update({"selection": "dashboard"}) - posts = feedparser.parse( - "{}{}/weblog/feeds/".format(MODOBOA_WEBSITE_URL, lang)) + feed_url = "{}{}/weblog/feeds/".format(MODOBOA_WEBSITE_URL, lang) + if self.request.user.role != "SuperAdmins": + custom_feed_url = ( + self.request.localconfig.parameters.get_value("news_url")) + if custom_feed_url: + feed_url = custom_feed_url + posts = feedparser.parse(feed_url) entries = [] for entry in posts["entries"][:5]: entry["published"] = parser.parse(entry["published"])