From a0d8f26277a3ae0a770ca033539b6c1405a27c74 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 12 Jan 2017 17:18:48 +0100 Subject: [PATCH] New widget to display current features to sponsor. WIP --- .../templates/core/_current_features.html | 19 +++++++++++++++++++ modoboa/core/views/dashboard.py | 18 +++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modoboa/core/templates/core/_current_features.html diff --git a/modoboa/core/templates/core/_current_features.html b/modoboa/core/templates/core/_current_features.html new file mode 100644 index 000000000..06935b933 --- /dev/null +++ b/modoboa/core/templates/core/_current_features.html @@ -0,0 +1,19 @@ +{% load i18n %} + + +
+
+

{% trans "Features looking for sponsoring" %}

+
+
+ {% for feature in features %} +

{{ feature.name }}

+ {% trans "Current:" %} {{ feature.current }} + {% trans "Goal:" %} {{ feature.goal }} +

{{ feature.description }}

+ {% trans "More" %} + {% empty %} +
{% trans "FIXME" %}
+ {% endfor %} +
+
diff --git a/modoboa/core/views/dashboard.py b/modoboa/core/views/dashboard.py index 2ed925deb..25613dc91 100644 --- a/modoboa/core/views/dashboard.py +++ b/modoboa/core/views/dashboard.py @@ -2,6 +2,7 @@ from dateutil import parser import feedparser +import requests from django.views import generic @@ -9,6 +10,8 @@ from django.contrib.auth import mixins as auth_mixins from .. import signals +MODOBOA_WEBSITE_URL = "https://modoboa.org/" + class DashboardView(auth_mixins.AccessMixin, generic.TemplateView): """Dashboard view.""" @@ -32,14 +35,26 @@ class DashboardView(auth_mixins.AccessMixin, generic.TemplateView): lang = "fr" else: lang = "en" + context.update({"selection": "dashboard"}) + posts = feedparser.parse( - "https://modoboa.org/{}/weblog/feeds/".format(lang)) + "{}{}/weblog/feeds/".format(MODOBOA_WEBSITE_URL, lang)) entries = [] for entry in posts["entries"][:5]: entry["published"] = parser.parse(entry["published"]) entries.append(entry) context["widgets"]["left"].append("core/_latest_news_widget.html") context.update({"news": entries}) + + url = "{}{}/projects/?featured=true".format( + MODOBOA_WEBSITE_URL, lang) + response = requests.get(url) + features = [] + if response.status_code == 200: + features = response.json() + context["widgets"]["left"].append("core/_current_features.html") + context.update({"features": features}) + # Extra widgets result = signals.extra_admin_dashboard_widgets.send( sender=self.__class__, user=self.request.user) @@ -49,4 +64,5 @@ class DashboardView(auth_mixins.AccessMixin, generic.TemplateView): widget["template"]) # FIXME: can raise conflicts... context.update(widget["context"]) + return context