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)
 
 # -*- 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
     """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