Skip to content

Commit

Permalink
Merge branch 'master' into permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
bri25yu committed Mar 30, 2022
2 parents 0fbf462 + 4891e0d commit 0c4f51b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 22 deletions.
10 changes: 5 additions & 5 deletions hknweb/events/templates/events/leaderboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{% endblock %}

{% block header %}
<link rel="stylesheet" href="{% static "events/style.css" %}">
<link rel="stylesheet" href="{% static 'events/style.css' %}">
<style>
.heading {
display: none;
Expand All @@ -24,7 +24,7 @@
{% endblock %}

{% block content %}
<h1 class="centered"> Events Leaderboard </h1>
<h1 style="text-align: center;"> Events Leaderboard </h1>

<div>
<table class="center" >
Expand All @@ -33,10 +33,10 @@ <h1 class="centered"> Events Leaderboard </h1>
<th>Events Attended</th>
</tr>

{% for tuple in page_obj %}
{% for user in page_obj %}
<tr>
<td style="text-align:center; width: 20%; overflow: hidden;">{{ tuple.0 }}</td>
<td style="text-align:center; width: 20%; overflow: hidden;">{{ tuple.1 }}</td>
<td style="text-align:center; width: 20%; overflow: hidden;">{{ user }}</td>
<td style="text-align:center; width: 20%; overflow: hidden;">{{ user.num_rsvps }}</td>
</tr>
{% endfor %}
</table>
Expand Down
23 changes: 6 additions & 17 deletions hknweb/events/views/aggregate_displays/leaderboard.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,19 @@
from django.core.paginator import Paginator
from django.shortcuts import render

from hknweb.events.models import Rsvp
from hknweb.utils import allow_all_logged_in_users
from django.db.models import Count, Q
from django.contrib.auth.models import User

PAGE_SIZE = 20


@allow_all_logged_in_users
def get_leaderboard(request):
confirmed_rsvps = Rsvp.objects.all()
user_to_events = {}
for rsvp in confirmed_rsvps:
if rsvp.confirmed:
if rsvp.user in user_to_events:
user_to_events[rsvp.user] += 1
else:
user_to_events[rsvp.user] = 1
sorted_list = [
(k, v)
for k, v in sorted(
user_to_events.items(), key=lambda item: item[1], reverse=True
)
]
res = User.objects\
.annotate(num_rsvps=Count("rsvp", filter=Q(rsvp__confirmed=True))) \
.order_by("-num_rsvps")

paginator = Paginator(sorted_list, PAGE_SIZE)
paginator = Paginator(res, PAGE_SIZE)

page_number = request.GET.get("page")
page_obj = paginator.get_page(page_number)
Expand Down

0 comments on commit 0c4f51b

Please sign in to comment.