[charts] Fix chart building

This commit is contained in:
2026-03-22 12:59:54 -04:00
parent 02d13b5a99
commit 83d89001a7
22 changed files with 291 additions and 86 deletions

View File

@ -47,19 +47,28 @@ class ArtistDetailView(generic.DetailView):
def get_context_data(self, **kwargs):
context_data = super().get_context_data(**kwargs)
artist = context_data["object"]
rank = 1
tracks_ranked = []
scrobbles = artist.tracks.first().scrobble_count
for track in artist.tracks:
if scrobbles > track.scrobble_count:
rank += 1
tracks_ranked.append((rank, track))
scrobbles = track.scrobble_count
ranked_tracks = sorted(
artist.tracks.all(), key=lambda t: t.scrobble_count, reverse=True
)[:10]
tracks_ranked = [
(rank, track) for rank, track in enumerate(ranked_tracks, start=1)
]
context_data["tracks_ranked"] = tracks_ranked
context_data["charts"] = ChartRecord.objects.filter(
artist=self.object, rank__in=[1, 2, 3]
)
from scrobbles.models import Scrobble
context_data["recent_scrobbles"] = (
Scrobble.objects.filter(track__artist=artist)
.select_related("track", "track__album")
.order_by("-timestamp")[:100]
)
return context_data