Skip to content

enhancement: added commitfest stats to /me page #52

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Mar 22, 2025
7 changes: 7 additions & 0 deletions pgcommitfest/commitfest/templates/me.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>

<p>
<br/>
<b>Status summary: </b>{%for id,title,num in statussummary%}<a href="?status={{id}}">{{title}}</a>: {{num}}. {%endfor%}
</p>


{%include "filter_form.html" %}
{%for p in patches %}
{%ifchanged p.is_open%}
Expand Down
32 changes: 31 additions & 1 deletion pgcommitfest/commitfest/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,44 @@ 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 NOT IN ( %(patch_stat_committed)s, %(patch_stat_rejected)s, %(patch_stat_withdrawn)s, %(patch_stat_nextcf)s, %(patch_stat_retwfdb)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
)
)
GROUP BY ps.status ORDER BY ps.sortkey""",
{
"user_id": request.user.id,
"patch_stat_committed": PatchOnCommitFest.STATUS_COMMITTED,
"patch_stat_rejected": PatchOnCommitFest.STATUS_REJECTED,
"patch_stat_withdrawn": PatchOnCommitFest.STATUS_WITHDRAWN,
"patch_stat_nextcf": PatchOnCommitFest.STATUS_NEXT,
"patch_stat_retwfdb": PatchOnCommitFest.STATUS_RETURNED,
},
)
statussummary = curs.fetchall()

return render(
request,
"me.html",
{
"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,
Expand Down