X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/f59e7c3de6bd0f85a61a4d9481db60cd7369ae92..6dd3e47a80aeb8d0208bcbfdaaa6275d0cceae3d:/apps/reporting/views.py diff --git a/apps/reporting/views.py b/apps/reporting/views.py index 958e08009..8cb2715d5 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) @@ -28,11 +30,14 @@ def stats_page(request): else: mt['deprecated'] = '-' + licenses = set(((b.extra_info.get('license'), b.extra_info.get('license_description')) + for b in Book.objects.all().iterator() if b.extra_info.get('license'))) + return render_to_response('reporting/main.html', locals(), context_instance=RequestContext(request)) -@generated_file_view('reports/katalog.pdf', 'application/pdf', +@generated_file_view('reports/katalog.pdf', 'application/pdf', send_name=lambda: 'wolnelektury_%s.pdf' % date.today(), signals=[Book.published]) def catalogue_pdf(path): @@ -40,3 +45,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())