<ul>
<li>Number of tracks: {{zone.stats.count}}{% if from_date %} (new: {{zone.stats.new_files}}, {{zone.stats.percent_new_files}}){% endif %}
+ (duration: {{zone.stats.total_duration}})
<ul>
<li>Instru: {{zone.stats.instru}} ({{zone.stats.instru_percentage}})</li>
<li>SABAM: {{zone.stats.sabam}} ({{zone.stats.sabam_percentage}})</li>
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse
from django.contrib import messages
-from django.db.models import Q
+from django.db.models import Q, Sum
from django.http import HttpResponse, HttpResponseRedirect, FileResponse
from django.utils.six import StringIO
from django.utils.translation import ugettext_lazy as _
self.qs = self.qs.filter(nonstopfile__somalogline__play_timestamp__lte=until_date)
self.qs = self.qs.distinct()
+ def total_duration(self, **kwargs):
+ total = self.qs.filter(**kwargs).aggregate(Sum('duration'))['duration__sum'].total_seconds()
+ if total > 3600 * 2:
+ duration = _('%d hours') % (total / 3600)
+ else:
+ duration = _('%d minutes') % (total / 60)
+ start = datetime.datetime(2000, 1, 1, self.zone.start.hour, self.zone.start.minute)
+ end = datetime.datetime(2000, 1, 1, self.zone.end.hour, self.zone.end.minute)
+ if end < start:
+ end = end + datetime.timedelta(days=1)
+ return duration + _(', → %d days') % (total // (end - start).total_seconds())
+
def count(self, **kwargs):
return self.qs.filter(**kwargs).count()