From: Marek Stępniowski 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?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