Fix chart rank and periods
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
from datetime import timedelta
|
||||
from django.utils import timezone
|
||||
from django.db.models import Count
|
||||
from django.views import generic
|
||||
from music.models import Album, Artist, Track
|
||||
from scrobbles.models import ChartRecord
|
||||
@ -22,7 +21,6 @@ class TrackDetailView(generic.DetailView):
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context_data = super().get_context_data(**kwargs)
|
||||
|
||||
context_data['charts'] = ChartRecord.objects.filter(
|
||||
track=self.object, rank__in=[1, 2, 3]
|
||||
)
|
||||
@ -34,7 +32,12 @@ class ArtistListView(generic.ListView):
|
||||
paginate_by = 100
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().order_by("name")
|
||||
return (
|
||||
super()
|
||||
.get_queryset()
|
||||
.annotate(scrobble_count=Count('track__scrobble'))
|
||||
.order_by("-scrobble_count")
|
||||
)
|
||||
|
||||
def get_context_data(self, *, object_list=None, **kwargs):
|
||||
context_data = super().get_context_data(
|
||||
@ -50,6 +53,17 @@ 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
|
||||
|
||||
context_data['tracks_ranked'] = tracks_ranked
|
||||
context_data['charts'] = ChartRecord.objects.filter(
|
||||
artist=self.object, rank__in=[1, 2, 3]
|
||||
)
|
||||
@ -58,17 +72,14 @@ class ArtistDetailView(generic.DetailView):
|
||||
|
||||
class AlbumListView(generic.ListView):
|
||||
model = Album
|
||||
paginate_by = 50
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().order_by("name")
|
||||
|
||||
def get_context_data(self, *, object_list=None, **kwargs):
|
||||
context_data = super().get_context_data(
|
||||
object_list=object_list, **kwargs
|
||||
return (
|
||||
super()
|
||||
.get_queryset()
|
||||
.annotate(scrobble_count=Count('track__scrobble'))
|
||||
.order_by("-scrobble_count")
|
||||
)
|
||||
context_data['view'] = self.request.GET.get('view')
|
||||
return context_data
|
||||
|
||||
|
||||
class AlbumDetailView(generic.DetailView):
|
||||
|
||||
Reference in New Issue
Block a user