Ver código fonte

Super hack for chart pages

Colin Powell 2 anos atrás
pai
commit
0a9279dbd4

+ 22 - 8
vrobbler/apps/scrobbles/views.py

@@ -458,7 +458,7 @@ class ChartRecordView(TemplateView):
 
         if not date:
             artist_params = {'user': user, 'media_type': 'Artist'}
-            context_data['artist_charts'] = {
+            context_data['current_artist_charts'] = {
                 "today": live_charts(**artist_params, chart_period="today"),
                 "week": live_charts(**artist_params, chart_period="week"),
                 "month": live_charts(**artist_params, chart_period="month"),
@@ -466,7 +466,7 @@ class ChartRecordView(TemplateView):
             }
 
             track_params = {'user': user, 'media_type': 'Track'}
-            context_data['track_charts'] = {
+            context_data['current_track_charts'] = {
                 "today": live_charts(**track_params, chart_period="today"),
                 "week": live_charts(**track_params, chart_period="week"),
                 "month": live_charts(**track_params, chart_period="month"),
@@ -511,21 +511,35 @@ class ChartRecordView(TemplateView):
                 now.month == month and now.year == year and now.day == day
             )
 
-        media_filter = self.get_media_filter(media_type)
-        charts = ChartRecord.objects.filter(
+        media_filter = self.get_media_filter("Track")
+        track_charts = ChartRecord.objects.filter(
+            media_filter, user=self.request.user, **params
+        ).order_by("rank")
+        media_filter = self.get_media_filter("Artist")
+        artist_charts = ChartRecord.objects.filter(
             media_filter, user=self.request.user, **params
         ).order_by("rank")
 
-        if charts.count() == 0 and not in_progress:
+        if track_charts.count() == 0 and not in_progress:
             ChartRecord.build(
-                user=self.request.user, model_str=media_type, **params
+                user=self.request.user, model_str="Track", **params
             )
-            charts = ChartRecord.objects.filter(
+            media_filter = self.get_media_filter("Track")
+            track_charts = ChartRecord.objects.filter(
+                media_filter, user=self.request.user, **params
+            ).order_by("rank")
+        if artist_charts.count() == 0 and not in_progress:
+            ChartRecord.build(
+                user=self.request.user, model_str="Artist", **params
+            )
+            media_filter = self.get_media_filter("Artist")
+            artist_charts = ChartRecord.objects.filter(
                 media_filter, user=self.request.user, **params
             ).order_by("rank")
 
         context_data['media_type'] = media_type
-        context_data['charts'] = charts
+        context_data['track_charts'] = track_charts
+        context_data['artist_charts'] = artist_charts
         context_data['name'] = " ".join(["Top", media_type, "for", name])
         context_data['in_progress'] = in_progress
         return context_data

+ 54 - 54
vrobbler/templates/scrobbles/chart_index.html

@@ -4,66 +4,66 @@
 
 {% block lists %}
 <div class="row">
-    {% if charts %}
-    {% if "Artist" in name %}
-    <div class="tab-content" id="artistTabContent">
-        <div class="table-responsive">
-            <table class="table table-striped table-sm">
-                <thead>
-                    <tr>
-                        <th scope="col">Rank</th>
-                        <th scope="col">Artist</th>
-                        <th scope="col">Scrobbles</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    {% for chart in charts %}
-                    <tr>
-                        <td>{{chart.rank}}</td>
-                        <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj}}</a></td>
-                        <td>{{chart.count}}</td>
-                    </tr>
-                    {% endfor %}
-                </tbody>
-            </table>
+    {% if artist_charts %}
+    <div class="col-md">
+        <div class="tab-content" id="artistTabContent">
+            <div class="table-responsive">
+                <table class="table table-striped table-sm">
+                    <thead>
+                        <tr>
+                            <th scope="col">Rank</th>
+                            <th scope="col">Artist</th>
+                            <th scope="col">Scrobbles</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for chart in artist_charts %}
+                        <tr>
+                            <td>{{chart.rank}}</td>
+                            <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj}}</a></td>
+                            <td>{{chart.count}}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+            </div>
         </div>
     </div>
-    {% elif media_type == "Track" %}
-    <div class="tab-content" id="artistTabContent">
-        <div class="table-responsive">
-            <table class="table table-striped table-sm">
-                <thead>
-                    <tr>
-                        <th scope="col">Rank</th>
-                        <th scope="col">Artist</th>
-                        <th scope="col">Track</th>
-                        <th scope="col">Scrobbles</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    {% for chart in charts %}
-                    <tr>
-                        <td>{{chart.rank}}</td>
-                        <td><a href="{{chart.media_obj.artist.get_absolute_url}}">{{chart.media_obj.artist}}</a></td>
-                        <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj.title}}</a></td>
-                        <td>{{chart.count}}</td>
-                    </tr>
-                    {% endfor %}
-                </tbody>
-            </table>
+    {% endif %}
+
+    {% if track_charts %}
+    <div class="col-md">
+        <div class="tab-content" id="artistTabContent">
+            <div class="table-responsive">
+                <table class="table table-striped table-sm">
+                    <thead>
+                        <tr>
+                            <th scope="col">Rank</th>
+                            <th scope="col">Track</th>
+                            <th scope="col">Scrobbles</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {% for chart in track_charts %}
+                        <tr>
+                            <td>{{chart.rank}}</td>
+                            <td><a href="{{chart.media_obj.get_absolute_url}}">{{chart.media_obj.title}}</a></td>
+                            <td>{{chart.count}}</td>
+                        </tr>
+                        {% endfor %}
+                    </tbody>
+                </table>
+            </div>
         </div>
     </div>
-    {% elif "Video" in name %}
-    {% elif "Series" in name %}
-    {% endif %}
     {% endif %}
 
-    {% if artist_charts %}
+    {% if current_artist_charts %}
     <div class="col-md">
         <h2>Top Artists</h2>
 
         <ul class="nav nav-tabs" id="artistTab" role="tablist">
-            {% for chart_name in artist_charts.keys %}
+            {% for chart_name in current_artist_charts.keys %}
             <li class="nav-item" role="presentation">
                 <button class="nav-link {% if forloop.first %}active{% endif %}" id="artist-{{chart_name}}-tab" data-bs-toggle="tab" data-bs-target="#artist-{{chart_name}}"
                         type="button" role="tab" aria-controls="home" aria-selected="true">
@@ -74,7 +74,7 @@
         </ul>
 
         <div class="tab-content" id="artistTabContent">
-            {% for chart_name, artists in artist_charts.items %}
+            {% for chart_name, artists in current_artist_charts.items %}
             <div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="artist-{{chart_name}}" role="tabpanel"
                 aria-labelledby="artist-{[chart}}-tab">
                 <div class="table-responsive">
@@ -101,12 +101,12 @@
         {% endif %}
     </div>
 
-    {% if track_charts %}
+    {% if current_track_charts %}
     <div class="col-md">
         <h2>Top Tracks</h2>
 
         <ul class="nav nav-tabs" id="artistTab" role="tablist">
-            {% for chart_name in track_charts.keys %}
+            {% for chart_name in current_track_charts.keys %}
             <li class="nav-item" role="presentation">
                 <button class="nav-link {% if forloop.first %}active{% endif %}" id="track-{{chart_name}}-tab" data-bs-toggle="tab" data-bs-target="#track-{{chart_name}}"
                         type="button" role="tab" aria-controls="home" aria-selected="true">
@@ -117,7 +117,7 @@
         </ul>
 
         <div class="tab-content" id="trackTabContent">
-            {% for chart_name, tracks in track_charts.items %}
+            {% for chart_name, tracks in current_track_charts.items %}
             <div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="track-{{chart_name}}" role="tabpanel"
                 aria-labelledby="track-{[chart_name}}-tab">
                 <div class="table-responsive">

+ 4 - 5
vrobbler/templates/scrobbles/scrobble_list.html

@@ -84,13 +84,12 @@
                                 <tr>
                                     <td>{{scrobble.timestamp|naturaltime}}</td>
                                     {% if scrobble.track.album.cover_image %}
-                                    <td><img src="{{scrobble.track.album.cover_image.url}}" width=25 height=25
-                                            style="border:1px solid black;" /></td>
+                                    <td><a href="{{scrobble.track.album.get_absolute_url}}"><img src="{{scrobble.track.album.cover_image.url}}" width=25 height=25 style="border:1px solid black;" /></aa></td>
                                     {% else %}
-                                    <td>{{scrobble.track.album.name}}</td>
+                                    <td><a href="{{scrobble.track.album.get_absolute_url}}">{{scrobble.track.album.name}}</a></td>
                                     {% endif %}
-                                    <td>{{scrobble.track.title}}</td>
-                                    <td>{{scrobble.track.artist.name}}</td>
+                                    <td><a href="{{scrobble.track.get_absolute_url }}">{{scrobble.track.title}}</a></td>
+                                    <td><a href="{{scrobble.track.artist.get_absolute_url }}">{{scrobble.track.artist.name}}</aa></td>
                                 </tr>
                                 {% endfor %}
                             </tbody>