diff --git a/vrobbler/apps/books/views.py b/vrobbler/apps/books/views.py index d4df0a8..a86e7f7 100644 --- a/vrobbler/apps/books/views.py +++ b/vrobbler/apps/books/views.py @@ -1,15 +1,15 @@ from django.views import generic from books.models import Book, Author +from scrobbles.views import ScrobbleableListView, ScrobbleableDetailView -class BookListView(generic.ListView): + +class BookListView(ScrobbleableListView): model = Book - paginate_by = 20 -class BookDetailView(generic.DetailView): +class BookDetailView(ScrobbleableDetailView): model = Book - slug_field = "uuid" class AuthorDetailView(generic.DetailView): diff --git a/vrobbler/apps/moods/views.py b/vrobbler/apps/moods/views.py index 1d78fd8..a807963 100644 --- a/vrobbler/apps/moods/views.py +++ b/vrobbler/apps/moods/views.py @@ -1,5 +1,3 @@ -from django.db.models import Count -from django.views import generic from moods.models import Mood from scrobbles.views import ScrobbleableListView, ScrobbleableDetailView diff --git a/vrobbler/apps/music/views.py b/vrobbler/apps/music/views.py index fd1617c..8e3bc04 100644 --- a/vrobbler/apps/music/views.py +++ b/vrobbler/apps/music/views.py @@ -4,20 +4,15 @@ from music.models import Album, Artist, Track from scrobbles.models import ChartRecord from scrobbles.stats import get_scrobble_count_qs +from scrobbles.views import ScrobbleableListView, ScrobbleableDetailView -class TrackListView(generic.ListView): + +class TrackListView(ScrobbleableListView): model = Track - paginate_by = 200 - - def get_queryset(self): - return get_scrobble_count_qs(user=self.request.user).order_by( - "-scrobble_count" - ) -class TrackDetailView(generic.DetailView): +class TrackDetailView(ScrobbleableDetailView): model = Track - slug_field = "uuid" def get_context_data(self, **kwargs): context_data = super().get_context_data(**kwargs) diff --git a/vrobbler/apps/videos/views.py b/vrobbler/apps/videos/views.py index ee9aa14..cdd8563 100644 --- a/vrobbler/apps/videos/views.py +++ b/vrobbler/apps/videos/views.py @@ -1,6 +1,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin from django.views import generic from videos.models import Series, Video +from scrobbles.views import ScrobbleableListView, ScrobbleableDetailView class MovieListView(LoginRequiredMixin, generic.ListView): @@ -33,6 +34,9 @@ class SeriesDetailView(LoginRequiredMixin, generic.DetailView): return context_data -class VideoDetailView(LoginRequiredMixin, generic.DetailView): +class VideoListView(ScrobbleableListView): + model = Video + + +class VideoDetailView(ScrobbleableDetailView): model = Video - slug_field = "uuid" diff --git a/vrobbler/apps/webpages/views.py b/vrobbler/apps/webpages/views.py index 54d5777..7aa0a2c 100644 --- a/vrobbler/apps/webpages/views.py +++ b/vrobbler/apps/webpages/views.py @@ -7,29 +7,15 @@ from django.views import generic from webpages.forms import WebPageReadForm from webpages.models import WebPage +from scrobbles.views import ScrobbleableListView, ScrobbleableDetailView -class WebPageListView(LoginRequiredMixin, generic.ListView): + +class WebPageListView(ScrobbleableListView): model = WebPage - paginate_by = 20 - - def get_queryset(self): - return ( - super() - .get_queryset() - .annotate(scrobble_count=Count("scrobble")) - .order_by("-scrobble_count") - ) -class WebPageDetailView(LoginRequiredMixin, generic.DetailView): +class WebPageDetailView(ScrobbleableDetailView): model = WebPage - slug_field = "uuid" - - def get_context_data(self, **kwargs): - user = self.request.user - context_data = super().get_context_data(**kwargs) - context_data["scrobbles"] = self.object.scrobbles(user) - return context_data class WebPageReadView(