X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/1d641adedff354dc932c81ae7b1d9f8c41d0b459..1d85ebc2439c19626574166d4f37ae4990fdbf27:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index 82ca9fde0..13a7da4ff 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -10,7 +10,6 @@ import pprint import traceback import re import itertools -from operator import itemgetter from datetime import datetime from django.conf import settings @@ -31,7 +30,7 @@ from django.utils.http import urlquote_plus from django.views.decorators import cache from django.utils.translation import ugettext as _ from django.views.generic.list_detail import object_list -from django.template.defaultfilters import slugify + from catalogue import models from catalogue import forms from catalogue.utils import split_tags @@ -433,7 +432,7 @@ def find_best_matches(query, user=None): if isinstance(match, models.Book)) authors = set(match.name.lower() for match in result if isinstance(match, models.Tag) and match.category=='author') - result = (res for res in result if not ( + result = tuple(res for res in result if not ( (isinstance(res, pdcounter_models.BookStub) and res.pretty_title().lower() in book_titles) or (isinstance(res, pdcounter_models.Author) and res.name.lower() in authors) )) @@ -610,22 +609,22 @@ def download_shelf(request, slug): if 'odt' in formats and book.has_media("odt"): for file in book.get_media("odt"): filename = file.file.path - archive.write(filename, str('%s.odt' % slugify(file.name))) + archive.write(filename, str('%s.odt' % slughifi(file.name))) if 'txt' in formats and book.txt_file: filename = book.txt_file.path archive.write(filename, str('%s.txt' % book.slug)) if 'mp3' in formats and book.has_media("mp3"): for file in book.get_media("mp3"): filename = file.file.path - archive.write(filename, str('%s.mp3' % slugify(file.name))) + archive.write(filename, str('%s.mp3' % slughifi(file.name))) if 'ogg' in formats and book.has_media("ogg"): for file in book.get_media("ogg"): filename = file.file.path - archive.write(filename, str('%s.ogg' % slugify(file.name))) + archive.write(filename, str('%s.ogg' % slughifi(file.name))) if 'daisy' in formats and book.has_media("daisy"): for file in book.get_media("daisy"): filename = file.file.path - archive.write(filename, str('%s.daisy' % slugify(file.name))) + archive.write(filename, str('%s.daisy' % slughifi(file.name))) archive.close() response = HttpResponse(content_type='application/zip', mimetype='application/x-zip-compressed') @@ -651,16 +650,11 @@ def shelf_book_formats(request, shelf): formats['pdf'] = True if book.root_ancestor.epub_file: formats['epub'] = True - if book.odt_file: - formats['odt'] = True if book.txt_file: formats['txt'] = True - if book.mp3_file: - formats['mp3'] = True - if book.ogg_file: - formats['ogg'] = True - if book.daisy_file: - formats['daisy'] = True + for format in ('odt', 'mp3', 'ogg'): + if not formats[format] and book.has_media(format): + formats[format] = True return HttpResponse(LazyEncoder().encode(formats)) @@ -766,6 +760,7 @@ def clock(request): def xmls(request): """" Create a zip archive with all XML files. + This should be removed when we have real API. """ temp = tempfile.TemporaryFile() archive = zipfile.ZipFile(temp, 'w') @@ -781,25 +776,3 @@ def xmls(request): temp.seek(0) response.write(temp.read()) return response - - -@cache.never_cache -def epubs(request): - """" - Create a tar archive with all EPUB files, segregated to directories. - """ - - temp = tempfile.TemporaryFile() - archive = tarfile.TarFile(fileobj=temp, mode='w') - - for book in models.Book.objects.exclude(epub_file=''): - archive.add(book.epub_file.path, (u'%s/%s.epub' % (book.get_extra_info_value()['author'], book.slug)).encode('utf-8')) - archive.close() - - response = HttpResponse(content_type='application/tar', mimetype='application/x-tar') - response['Content-Disposition'] = 'attachment; filename=epubs.tar' - response['Content-Length'] = temp.tell() - - temp.seek(0) - response.write(temp.read()) - return response