From: Marek Stępniowski <marek@stepniowski.com>
Date: Tue, 27 Oct 2009 18:35:49 +0000 (+0100)
Subject: Wypisywanie błędów przy importowaniu książek (obecnie wypisujemy po prostu wyjątek... 
X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/55953c705567baf05403303de45c3720685571eb?ds=sidebyside;hp=9ebb05623b3899331e8ecd1348c596b758acfcfc

Wypisywanie błędów przy importowaniu książek (obecnie wypisujemy po prostu wyjątek Django).
---

diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py
index 58025fabd..2c1f66a6b 100644
--- a/apps/catalogue/models.py
+++ b/apps/catalogue/models.py
@@ -231,11 +231,14 @@ class Book(models.Model):
         if hasattr(book_info, 'parts'):
             for n, part_url in enumerate(book_info.parts):
                 base, slug = part_url.rsplit('/', 1)
-                child_book = Book.objects.get(slug=slug)
-                child_book.parent = book
-                child_book.parent_number = n
-                child_book.save()
-
+                try:
+                    child_book = Book.objects.get(slug=slug)
+                    child_book.parent = book
+                    child_book.parent_number = n
+                    child_book.save()
+                except Book.DoesNotExist, e:
+                    raise Book.DoesNotExist(u'Book with slug = "%s" does not exist.' % slug)
+        
         book_descendants = list(book.children.all())
         while len(book_descendants) > 0:
             child_book = book_descendants.pop(0)
diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py
index b61d5e803..cc7669b06 100644
--- a/apps/catalogue/views.py
+++ b/apps/catalogue/views.py
@@ -1,6 +1,9 @@
 # -*- coding: utf-8 -*-
 import tempfile
 import zipfile
+import sys
+import pprint
+import traceback
 
 from django.template import RequestContext
 from django.shortcuts import render_to_response, get_object_or_404
@@ -369,10 +372,13 @@ def import_book(request):
     """docstring for import_book"""
     book_import_form = forms.BookImportForm(request.POST, request.FILES)
     if book_import_form.is_valid():
-        # try:
-        book_import_form.save()
-        # except:
-            # return HttpResponse("Error importing book: %r" % (sys.exc_info(),))
+        try:
+            book_import_form.save()
+        except:
+            info = sys.exc_info()
+            exception = pprint.pformat(info[1])
+            tb = '\n'.join(traceback.format_tb(info[2]))
+            return HttpResponse("An error occurred: %s\n\n%s" % (exception, tb), mimetype='text/plain')
         return HttpResponse("Book imported successfully")
     else:
         return HttpResponse("Error importing file: %r" % book_import_form.errors)
\ No newline at end of file