Add campuses scoreboard

This commit is contained in:
Starthur 2022-03-29 18:46:19 +02:00
parent e480aec493
commit 978dd24a00
3 changed files with 17 additions and 2 deletions

View File

@ -12,6 +12,7 @@
<th scope="col">{% trans "Rank" %}</th> <th scope="col">{% trans "Rank" %}</th>
<th scope="col">{% trans "Username" %}</th> <th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Website" %}</th> <th scope="col">{% trans "Website" %}</th>
<th scope="col">{% trans "Campus" %}</th>
<th scope="col">{% trans "Score" %}</th> <th scope="col">{% trans "Score" %}</th>
</tr> </tr>
</thead> </thead>
@ -26,6 +27,12 @@
<a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a> <a href="{{ s.user.userprofileinfo.portfolio_site }}" target="_blank">{{ s.user.userprofileinfo.portfolio_site }}</a>
{% endif %} {% endif %}
</td> </td>
<td>
{% if s.user.userprofileinfo.intra42_campus %}
<a href="{% url 'scoreboard:campus' campus=s.user.userprofileinfo.intra42_campus %}">
{{ s.user.userprofileinfo.intra42_campus }}
</a>
{% endif %}
<td>{{ s.user.userprofileinfo.score }}</td> <td>{{ s.user.userprofileinfo.score }}</td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@ -4,5 +4,6 @@ from . import views
app_name = "scoreboard" app_name = "scoreboard"
urlpatterns = [ urlpatterns = [
path('', views.scoreboard, name='scoreboard') path('', views.scoreboard, name='scoreboard'),
path('campus/<str:campus>', views.campus, name='campus')
] ]

View File

@ -9,4 +9,11 @@ def scoreboard(request):
scores_p = paginator.get_page(page) scores_p = paginator.get_page(page)
return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p}) return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p})
def campus(request, campus):
scores = UserProfileInfo.objects.filter(score__gt=0, intra42_campus__exact=campus).select_related().order_by('-score', 'last_submission_date', 'user__username')
paginator = Paginator(scores, 20)
page = request.GET.get('page')
scores_p = paginator.get_page(page)
return render(request, 'scoreboard/scoreboard.html', {'scores':scores_p})
# Create your views here. # Create your views here.