Fixed #4431 -- Added a --traceback option for dumpdata and loaddata (which

shows how it can be used for other commands as well). Thanks, dakrauth.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6936 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-12-17 11:09:32 +00:00
parent 9229c34163
commit fbf49dfcee
3 changed files with 10 additions and 2 deletions

View File

@ -27,6 +27,8 @@ class BaseCommand(object):
help='The Python path to a settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),
make_option('--pythonpath',
help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".'),
make_option('--traceback', action='store_true',
help='Print traceback on exception'),
)
help = ''
args = ''

View File

@ -19,6 +19,7 @@ class Command(BaseCommand):
format = options.get('format', 'json')
indent = options.get('indent', None)
show_traceback = options.get('traceback', False)
if len(app_labels) == 0:
app_list = get_apps()
@ -42,4 +43,6 @@ class Command(BaseCommand):
try:
return serializers.serialize(format, objects, indent=indent)
except Exception, e:
if show_traceback:
raise
raise CommandError("Unable to serialize database: %s" % e)

View File

@ -27,6 +27,7 @@ class Command(BaseCommand):
self.style = no_style()
verbosity = int(options.get('verbosity', 1))
show_traceback = options.get('traceback', False)
# Keep a count of the installed objects and fixtures
count = [0, 0]
@ -98,11 +99,13 @@ class Command(BaseCommand):
label_found = True
except Exception, e:
fixture.close()
transaction.rollback()
transaction.leave_transaction_management()
if show_traceback:
raise
sys.stderr.write(
self.style.ERROR("Problem installing fixture '%s': %s\n" %
(full_path, str(e))))
transaction.rollback()
transaction.leave_transaction_management()
return
fixture.close()
except: