X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/f59e7c3de6bd0f85a61a4d9481db60cd7369ae92..d713c61258bf1fcebea7e21065ac2878f5bf45be:/apps/reporting/views.py diff --git a/apps/reporting/views.py b/apps/reporting/views.py index 958e08009..961a682a1 100644 --- a/apps/reporting/views.py +++ b/apps/reporting/views.py @@ -5,21 +5,23 @@ import os.path from datetime import date from django.conf import settings +from django.contrib.admin.views.decorators import staff_member_required from django.db.models import Count from django.shortcuts import render_to_response from django.template import RequestContext from catalogue.models import Book, BookMedia -from reporting.utils import render_to_pdf, generated_file_view +from reporting.utils import render_to_pdf, render_to_csv, generated_file_view +@staff_member_required def stats_page(request): media = BookMedia.objects.count() media_types = BookMedia.objects.values('type').\ annotate(count=Count('type')).\ order_by('type') for mt in media_types: - mt['size'] = sum(b.file.size for b in BookMedia.objects.filter(type=mt['type'])) + mt['size'] = sum(b.file.size for b in BookMedia.objects.filter(type=mt['type']).iterator()) if mt['type'] in ('mp3', 'ogg'): deprecated = BookMedia.objects.filter( type=mt['type'], source_sha1=None) @@ -40,3 +42,11 @@ def catalogue_pdf(path): render_to_pdf(path, 'reporting/catalogue.texml', locals(), { "wl-logo.png": os.path.join(settings.STATIC_ROOT, "img/logo-big.png"), }) + + +@generated_file_view('reports/katalog.csv', 'application/csv', + send_name=lambda: 'wolnelektury_%s.csv' % date.today(), + signals=[Book.published]) +def catalogue_csv(path): + books_by_author, orphans, books_by_parent = Book.book_list() + render_to_csv(path, 'reporting/catalogue.csv', locals())