diff --git a/pgcommitfest/commitfest/templates/me.html b/pgcommitfest/commitfest/templates/me.html index 5435e6c9..fd50f633 100644 --- a/pgcommitfest/commitfest/templates/me.html +++ b/pgcommitfest/commitfest/templates/me.html @@ -11,6 +11,13 @@ + +

+
+ Status summary: {%for id,title,num in statussummary%}{{title}}: {{num}}. {%endfor%} +

+ + {%include "filter_form.html" %} {%for p in patches %} {%ifchanged p.is_open%} diff --git a/pgcommitfest/commitfest/views.py b/pgcommitfest/commitfest/views.py index 471f3225..6be17eeb 100644 --- a/pgcommitfest/commitfest/views.py +++ b/pgcommitfest/commitfest/views.py @@ -86,6 +86,33 @@ def me(request): if patch_list.redirect: return patch_list.redirect + # Get stats related to user for current commitfest + curs = connection.cursor() + curs.execute( + """SELECT + ps.status, ps.statusstring, count(*) + FROM commitfest_patchoncommitfest poc + INNER JOIN commitfest_patch p ON p.id = poc.patch_id + INNER JOIN commitfest_patchstatus ps ON ps.status=poc.status + WHERE + ps.status = ANY(%(openstatuses)s) + AND ( + EXISTS ( + SELECT 1 FROM commitfest_patch_reviewers cpr WHERE cpr.patch_id=p.id AND cpr.user_id=%(user_id)s + ) + OR EXISTS ( + SELECT 1 FROM commitfest_patch_authors cpa WHERE cpa.patch_id=p.id AND cpa.user_id=%(user_id)s + ) + OR p.committer_id=%(user_id)s + ) + GROUP BY ps.status ORDER BY ps.sortkey""", + { + "user_id": request.user.id, + "openstatuses": PatchOnCommitFest.OPEN_STATUSES, + }, + ) + statussummary = curs.fetchall() + return render( request, "me.html", @@ -93,7 +120,7 @@ def me(request): "form": form, "title": "Personal Dashboard", "patches": patch_list.patches, - "statussummary": "", + "statussummary": statussummary, "has_filter": patch_list.has_filter, "grouping": patch_list.sortkey == 0, "sortkey": patch_list.sortkey,