From 94568c851a1d3a35d416d0882a8dadf6f6aa66bd Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 25 Jul 2021 16:35:08 +0100 Subject: [PATCH] Add package downloads badge to profile page --- app/blueprints/users/profile.py | 8 ++++++- app/templates/users/profile.html | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/blueprints/users/profile.py b/app/blueprints/users/profile.py index c8a1a11..71316d2 100644 --- a/app/blueprints/users/profile.py +++ b/app/blueprints/users/profile.py @@ -58,6 +58,7 @@ def profile(username): .select_from(User).join(PackageReview) \ .group_by(User.username).order_by(text("count DESC")).all() users_by_reviews = [ username for username, _ in users_by_reviews ] + review_idx = None review_percent = None try: @@ -66,9 +67,14 @@ def profile(username): except ValueError: pass + total_downloads = db.session.query(func.sum(Package.downloads)) \ + .select_from(User) \ + .join(User.maintained_packages) \ + .filter(User.id == user.id, Package.state == PackageState.APPROVED).scalar() + # Process GET or invalid POST return render_template("users/profile.html", user=user, packages=packages, - review_idx=review_idx, review_percent=review_percent) + total_downloads=total_downloads, review_idx=review_idx, review_percent=review_percent) @bp.route("/users//check/", methods=["POST"]) diff --git a/app/templates/users/profile.html b/app/templates/users/profile.html index 16fe9aa..fc5981f 100644 --- a/app/templates/users/profile.html +++ b/app/templates/users/profile.html @@ -180,6 +180,42 @@ {% endif %} + {% if total_downloads >= 50000 %} + {% if total_downloads >= 300000 %} + {% set badge_color = "gold" %} + {% elif total_downloads >= 100000 %} + {% set badge_color = "#888" %} + {% elif total_downloads >= 75000 %} + {% set badge_color = "#cd7f32" %} + {% else %} + {% set badge_color = "white" %} + {% endif %} +
+
+
+ +
+
+ {% if total_downloads >= 300000 %} + {{ _(">300k downloads") }} + {% elif total_downloads >= 100000 %} + {{ _(">100k downloads") }} + {% elif total_downloads >= 75000 %} + {{ _(">75k downloads") }} + {% else %} + {{ _(">50k downloads") }} + {% endif %} +
+

+ {{ _("Has received %(downloads)d downloads across all packages.", + display_name=user.display_name, downloads=total_downloads) }} +

+
+
+
+
+ {% endif %} + {% endif %} {% if current_user == user or user.checkPerm(current_user, "CHANGE_AUTHOR") %}