Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions website/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
Contributor,
Domain,
GitHubIssue,
GitHubReview,
Hunt,
InviteFriend,
Issue,
Expand Down Expand Up @@ -455,6 +456,20 @@ class GlobalLeaderboardView(LeaderboardBase, ListView):
template_name = "leaderboard_global.html"

def get_context_data(self, *args, **kwargs):
"""
Assembles template context for the global leaderboard page, adding leaderboards and related data.

The context includes:
- `user_related_tags`: tags associated with user profiles.
- `wallet`: the requesting user's Wallet if authenticated.
- `leaderboard`: top users by total score (limited to 10).
- `pr_leaderboard`: top repositories/users by merged pull request count (top 10).
- `code_review_leaderboard`: top reviewers by review count (top 10).
- `top_visitors`: user profiles ordered by daily visit count (top 10).

Returns:
dict: Context mapping names (as listed above) to their querysets or values.
"""
context = super(GlobalLeaderboardView, self).get_context_data(*args, **kwargs)

user_related_tags = Tag.objects.filter(userprofile__isnull=False).distinct()
Expand All @@ -478,13 +493,12 @@ def get_context_data(self, *args, **kwargs):
)
context["pr_leaderboard"] = pr_leaderboard

# Reviewed PR Leaderboard
# Reviewed PR Leaderboard - Fixed query to properly count reviews
reviewed_pr_leaderboard = (
GitHubIssue.objects.filter(type="pull_request")
.values(
"reviews__reviewer__user__username",
"reviews__reviewer__user__email",
"user_profile__github_url",
GitHubReview.objects.values(
"reviewer__user__username",
"reviewer__user__email",
"reviewer__github_url",
)
.annotate(total_reviews=Count("id"))
.order_by("-total_reviews")[:10]
Expand Down Expand Up @@ -1261,4 +1275,4 @@ def delete_notification(request, notification_id):
status=400,
)
else:
return JsonResponse({"status": "error", "message": "Invalid request method"}, status=405)
return JsonResponse({"status": "error", "message": "Invalid request method"}, status=405)
Loading