Kaynağa Gözat

[views] Clean up base scrobblable views

Colin Powell 9 ay önce
ebeveyn
işleme
cdfd8af078

+ 4 - 4
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):

+ 0 - 2
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
 

+ 4 - 9
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):
-    model = Track
-    paginate_by = 200
 
-    def get_queryset(self):
-        return get_scrobble_count_qs(user=self.request.user).order_by(
-            "-scrobble_count"
-        )
+class TrackListView(ScrobbleableListView):
+    model = Track
 
 
-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)

+ 6 - 2
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"

+ 4 - 18
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):
-    model = WebPage
-    paginate_by = 20
 
-    def get_queryset(self):
-        return (
-            super()
-            .get_queryset()
-            .annotate(scrobble_count=Count("scrobble"))
-            .order_by("-scrobble_count")
-        )
+class WebPageListView(ScrobbleableListView):
+    model = WebPage
 
 
-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(