Wypisywanie błędów przy importowaniu książek (obecnie wypisujemy po prostu wyjątek...
authorMarek Stępniowski <marek@stepniowski.com>
Tue, 27 Oct 2009 18:35:49 +0000 (19:35 +0100)
committerMarek Stępniowski <marek@stepniowski.com>
Tue, 27 Oct 2009 18:35:49 +0000 (19:35 +0100)
apps/catalogue/models.py
apps/catalogue/views.py

index 58025fa..2c1f66a 100644 (file)
@@ -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)
index b61d5e8..cc7669b 100644 (file)
@@ -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