]> git.0d.be Git - django-panik-nonstop.git/blobdiff - nonstop/views.py
add view to generate munin data
[django-panik-nonstop.git] / nonstop / views.py
index 18a909d1ae3ee611b42a97b230c98c3cc009976a..c8218cf475469fb05161be4b171f2b712c2f4cb8 100644 (file)
@@ -151,11 +151,23 @@ class ZoneStats(object):
     def cfwb_percentage(self):
         return self.percentage(cfwb=True)
 
+    def language_set(self):
+        return self.count() - self.language_unset()
+
+    def language_unset(self):
+        return self.count(language='')
+
+    def unset_language_percentage(self):
+        return self.percentage(language='')
+
     def french(self):
         return self.count(language='fr')
 
+    def unset_or_na_language(self):
+        return self.qs.filter(Q(language='') | Q(language='na')).count()
+
     def french_percentage(self):
-        considered_tracks = self.count() - self.instru()
+        considered_tracks = self.count() - self.unset_or_na_language()
         if considered_tracks == 0:
             return '-'
         return '%.2f%%' % (100. * self.french() / considered_tracks)
@@ -163,7 +175,7 @@ class ZoneStats(object):
     def quota_french(self):
         # obligation de diffuser annuellement au moins 30% d'œuvres musicales de
         # langue française
-        considered_tracks = self.count() - self.instru()
+        considered_tracks = self.count() - self.unset_or_na_language()
         if considered_tracks == 0:
             return True
         return (100. * self.french() / considered_tracks) > 30.
@@ -188,6 +200,7 @@ def parse_date(date):
         return datetime.datetime.today() + datetime.timedelta(int(date.rstrip('d')))
     return datetime.datetime.strptime(date, '%Y-%m-%d').date()
 
+
 class StatisticsView(TemplateView):
     template_name = 'nonstop/statistics.html'
 
@@ -304,6 +317,16 @@ class RecentTracksMetadataView(TracksMetadataView):
         return super().get_queryset().exclude(creation_timestamp__isnull=True).order_by('-creation_timestamp')[:50]
 
 
+class ArtistTracksMetadataView(TracksMetadataView):
+
+    @property
+    def page_title(self):
+        return _('Metadata of tracks from %s') % Artist.objects.get(id=self.kwargs['artist_pk']).name
+
+    def get_queryset(self):
+        return Track.objects.filter(artist_id=self.kwargs['artist_pk']).order_by('title')
+
+
 class QuickLinksView(TemplateView):
     template_name = 'nonstop/quick_links.html'
 
@@ -559,3 +582,27 @@ class ZoneSettings(FormView):
         zone.save()
         zone_settings.save()
         return super().form_valid(form)
+
+
+class MuninTracks(StatisticsView):
+    template_name = 'nonstop/munin_tracks.txt'
+    content_type = 'text/plain; charset=utf-8'
+
+    def get_context_data(self, **kwargs):
+        context = super().get_context_data(**kwargs)
+        context['nonstop_general_total'] = Track.objects.count()
+        active_tracks_qs = Track.objects.filter(nonstop_zones__isnull=False).distinct()
+        context['nonstop_general_active'] = active_tracks_qs.count()
+        context['nonstop_percentages_instru'] = 100 * (
+                active_tracks_qs.filter(instru=True).count() /
+                context['nonstop_general_active'])
+        context['nonstop_percentages_cfwb'] = 100 * (
+                active_tracks_qs.filter(cfwb=True).count() /
+                context['nonstop_general_active'])
+        context['nonstop_percentages_langset'] = 100 * (
+                active_tracks_qs.exclude(language='').count() /
+                context['nonstop_general_active'])
+        context['nonstop_percentages_french'] = 100 * (
+                active_tracks_qs.filter(language='fr').count() /
+                active_tracks_qs.exclude(language__isnull=True).exclude(language__in=('', 'na')).count())
+        return context