librarian bump
[wolnelektury.git] / apps / catalogue / views.py
index d74ca75..2a11f4b 100644 (file)
@@ -359,6 +359,10 @@ def _get_result_type(match):
     return type
 
 
+def books_starting_with(prefix):
+    prefix = prefix.lower()
+    return models.Book.objects.filter(_word_starts_with('title', prefix))
+
 
 def find_best_matches(query, user=None):
     """ Finds a Book, Tag or Bookstub best matching a query.
@@ -451,13 +455,13 @@ def user_shelves(request):
 
 @cache.never_cache
 def book_sets(request, slug):
+    if not request.user.is_authenticated():
+        return HttpResponse(_('<p>To maintain your shelves you need to be logged in.</p>'))
+
     book = get_object_or_404(models.Book, slug=slug)
     user_sets = models.Tag.objects.filter(category='set', user=request.user)
     book_sets = book.tags.filter(category='set', user=request.user)
 
-    if not request.user.is_authenticated():
-        return HttpResponse(_('<p>To maintain your shelves you need to be logged in.</p>'))
-
     if request.method == 'POST':
         form = forms.ObjectSetsForm(book, request.user, request.POST)
         if form.is_valid():
@@ -530,7 +534,7 @@ def download_shelf(request, slug):
     if form.is_valid():
         formats = form.cleaned_data['formats']
     if len(formats) == 0:
-        formats = ['pdf', 'epub', 'odt', 'txt', 'mp3', 'ogg']
+        formats = ['pdf', 'epub', 'odt', 'txt', 'mp3', 'ogg', 'daisy']
 
     # Create a ZIP archive
     temp = tempfile.TemporaryFile()
@@ -557,6 +561,9 @@ def download_shelf(request, slug):
         if 'ogg' in formats and book.ogg_file:
             filename = book.ogg_file.path
             archive.write(filename, str('%s.ogg' % book.slug))
+        if 'daisy' in formats and book.daisy_file:
+            filename = book.daisy_file.path
+            archive.write(filename, str('%s.daisy.zip' % book.slug))
     archive.close()
 
     response = HttpResponse(content_type='application/zip', mimetype='application/x-zip-compressed')
@@ -575,7 +582,7 @@ def shelf_book_formats(request, shelf):
     """
     shelf = get_object_or_404(models.Tag, slug=shelf, category='set')
 
-    formats = {'pdf': False, 'epub': False, 'odt': False, 'txt': False, 'mp3': False, 'ogg': False}
+    formats = {'pdf': False, 'epub': False, 'odt': False, 'txt': False, 'mp3': False, 'ogg': False, 'daisy': False}
 
     for book in collect_books(models.Book.tagged.with_all(shelf)):
         if book.pdf_file:
@@ -590,6 +597,8 @@ def shelf_book_formats(request, shelf):
             formats['mp3'] = True
         if book.ogg_file:
             formats['ogg'] = True
+        if book.daisy_file:
+            formats['daisy'] = True
 
     return HttpResponse(LazyEncoder().encode(formats))