X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/af77776a9ff93ac89cfe941c8a97e3e4cac1bd2e..51d450b5b3346e2b2418702c90449a0a87daaba9:/apps/reporting/views.py diff --git a/apps/reporting/views.py b/apps/reporting/views.py index 02038637e..a23252ec2 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,6 +30,9 @@ 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)) @@ -37,7 +42,14 @@ def stats_page(request): signals=[Book.published]) def catalogue_pdf(path): books_by_author, orphans, books_by_parent = Book.book_list() - print books_by_parent 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())