diff --git a/app/blueprints/users/profile.py b/app/blueprints/users/profile.py index a3f72e88..61730e9a 100644 --- a/app/blueprints/users/profile.py +++ b/app/blueprints/users/profile.py @@ -252,3 +252,14 @@ def user_check(username): next_url = url_for("users.profile", username=username) return redirect(url_for("tasks.check", id=task.id, r=next_url)) + + +@bp.route("/users//stats/") +def statistics(username): + user = User.query.filter_by(username=username).first() + if user is None: + abort(404) + + downloads = db.session.query(func.sum(Package.downloads)).filter(Package.author==user).one() + + return render_template("users/stats.html", user=user, downloads=downloads[0]) diff --git a/app/templates/macros/stats.html b/app/templates/macros/stats.html new file mode 100644 index 00000000..9d60accc --- /dev/null +++ b/app/templates/macros/stats.html @@ -0,0 +1,105 @@ +{% macro render_package_stats_js() %} + + + +{% endmacro %} + + +{% macro render_package_stats(source, downloads) %} + +
+
+
+
+
+ + {{ _("Lifetime unique downloads") }} +
+
+ {{ downloads }} +
+
+
+
+ +
+
+
+
+ + {{ _("Downloads, past 7 days") }} +
+
+ + + ({{ _("%(downloads)s per day", downloads=("" | safe)) }}) + +
+
+
+
+ +
+
+
+
+ + {{ _("Downloads, past 30 days") }} +
+
+ + + ({{ _("%(downloads)s per day", downloads=("" | safe)) }}) + +
+
+
+
+
+ +
{{ _("Loading...") }}
+ + + + +{% endmacro %} diff --git a/app/templates/packages/stats.html b/app/templates/packages/stats.html index 6b31c168..8da03132 100644 --- a/app/templates/packages/stats.html +++ b/app/templates/packages/stats.html @@ -4,10 +4,10 @@ {{ _("Statistics") }} - {{ package.title }} {% endblock %} +{% from "macros/stats.html" import render_package_stats, render_package_stats_js %} + {% block scriptextra %} - - - + {{ render_package_stats_js() }} {% endblock %} {% block content %} @@ -16,100 +16,5 @@ {{ _("Download (.csv)") }}

{{ _("Statistics") }}

- -
-
-
-
-
- - {{ _("Lifetime unique downloads") }} -
-
- {{ package.downloads }} -
-
-
-
- -
-
-
-
- - {{ _("Downloads, past 7 days") }} -
-
- - - ({{ _("%(downloads)s per day", downloads=("" | safe)) }}) - -
-
-
-
- -
-
-
-
- - {{ _("Downloads, past 30 days") }} -
-
- - - ({{ _("%(downloads)s per day", downloads=("" | safe)) }}) - -
-
-
-
-
- -
{{ _("Loading...") }}
- - - - + {{ render_package_stats(package.getURL('api.package_stats'), package.downloads) }} {% endblock %} diff --git a/app/templates/users/profile.html b/app/templates/users/profile.html index 292b87cc..c6bd2f14 100644 --- a/app/templates/users/profile.html +++ b/app/templates/users/profile.html @@ -97,10 +97,11 @@ {% endif %} + {% set package_count = user.packages.filter_by(state='APPROVED').count() %} - {{ user.packages.filter_by(state='APPROVED').count() }} + {{ package_count }} {{ _("packages") }} @@ -121,6 +122,15 @@ {{ _("comments") }} + + {% if package_count %} + + + + {{ _("Statistics") }} + + + {% endif %} diff --git a/app/templates/users/stats.html b/app/templates/users/stats.html new file mode 100644 index 00000000..b2a08eda --- /dev/null +++ b/app/templates/users/stats.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% block title %} +{{ _("Statistics for %(display_name)s's packages", display_name=user.display_name) }} +{% endblock %} + +{% from "macros/stats.html" import render_package_stats, render_package_stats_js, render_package_selector %} + +{% block scriptextra %} + {{ render_package_stats_js() }} +{% endblock %} + +{% block content %} +

{{ self.title() }}

+ {{ render_package_stats(url_for("api.user_stats", username=user.username), downloads) }} +{% endblock %}