[scrobbles] Fix log data parsing for tasks and boardgames

Add pagination to task and board game detail pages
This commit is contained in:
2025-07-30 11:37:57 -04:00
parent a7551ef162
commit 9437fdba60
6 changed files with 96 additions and 22 deletions

View File

@ -19,6 +19,8 @@ from django.views.generic import DetailView, FormView, TemplateView
from django.views.generic.edit import CreateView
from django.views.generic.list import ListView
from music.aggregators import live_charts, scrobble_counts, week_of_scrobbles
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from rest_framework import status
from rest_framework.decorators import (
api_view,
@ -76,18 +78,34 @@ class ScrobbleableListView(ListView):
)
return queryset
class ScrobbleableDetailView(DetailView):
model = None
slug_field = "uuid"
paginate_by = 200 # You can set this to whatever page size you want
def get_context_data(self, **kwargs):
context_data = super().get_context_data(**kwargs)
context_data["scrobbles"] = list()
scrobbles = []
if not self.request.user.is_anonymous:
context_data["scrobbles"] = self.object.scrobble_set.filter(
scrobbles = self.object.scrobble_set.filter(
user=self.request.user
).order_by("-timestamp")
paginator = Paginator(scrobbles, self.paginate_by)
page_number = self.request.GET.get("page")
try:
page_obj = paginator.page(page_number)
except PageNotAnInteger:
page_obj = paginator.page(1)
except EmptyPage:
page_obj = paginator.page(paginator.num_pages)
context_data["page_obj"] = page_obj
context_data["scrobbles"] = page_obj.object_list
context_data["is_paginated"] = paginator.num_pages > 1
return context_data