X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/af77776a9ff93ac89cfe941c8a97e3e4cac1bd2e..e18d543fa8e2bd224880a79fb71ea8726b1d45bf:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index 5f0b01652..bf0c42f70 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -2,12 +2,6 @@ # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # -import tempfile -import zipfile -import tarfile -import sys -import pprint -import traceback import re import itertools from datetime import datetime @@ -35,11 +29,9 @@ from django.views.generic.list_detail import object_list from catalogue import models from catalogue import forms from catalogue.utils import split_tags -from newtagging import views as newtagging_views from pdcounter import models as pdcounter_models from pdcounter import views as pdcounter_views from suggest.forms import PublishingSuggestForm -from slughifi import slughifi staff_required = user_passes_test(lambda user: user.is_staff) @@ -78,7 +70,8 @@ def main_page(request): context_instance=RequestContext(request)) -def book_list(request, filter=None, template_name='catalogue/book_list.html'): +def book_list(request, filter=None, template_name='catalogue/book_list.html', + context=None): """ generates a listing of all books, optionally filtered with a test function """ form = forms.SearchForm() @@ -103,6 +96,17 @@ def daisy_list(request): template_name='catalogue/daisy_list.html') +def collection(request, slug): + coll = get_object_or_404(models.Collection, slug=slug) + slugs = coll.book_slugs.split() + # allow URIs + slugs = [slug.rstrip('/').rsplit('/', 1)[-1] if '/' in slug else slug + for slug in slugs] + return book_list(request, Q(slug__in=slugs), + template_name='catalogue/collection.html', + context={'collection': coll}) + + def differentiate_tags(request, tags, ambiguous_slugs): beginning = '/'.join(tag.url_chunk for tag in tags) unparsed = '/'.join(ambiguous_slugs[1:]) @@ -573,6 +577,10 @@ def download_shelf(request, slug): without loading the whole file into memory. A similar approach can be used for large dynamic PDF files. """ + from slughifi import slughifi + import tempfile + import zipfile + shelf = get_object_or_404(models.Tag, slug=slug, category='set') formats = [] @@ -721,6 +729,9 @@ def import_book(request): try: book_import_form.save() except: + import sys + import pprint + import traceback info = sys.exc_info() exception = pprint.pformat(info[1]) tb = '\n'.join(traceback.format_tb(info[2]))