diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-10-02 13:56:09 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-10-02 13:56:09 +0000 |
| commit | 96c11b29bda6dab710925827f78445d92beaa5df (patch) | |
| tree | 6d5f7ffc4256d29b51a8e6c123f8c847ddc3c4ac | |
| parent | 57456c59a61ea3b228b346eab57358b28474ee63 (diff) | |
Fixed #10215 -- Ensured that there is parity between enter and leave transaction calls in loaddata when commit=False. The test case for this is the fixtures_regress unittests under MyISAM, which were failing previous to this fix. Thanks to MockSoul for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13978 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/management/commands/loaddata.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index 0b752b57e2..34f354341e 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -118,8 +118,9 @@ class Command(BaseCommand): self.stderr.write( self.style.ERROR("Problem installing fixture '%s': %s is not a known serialization format.\n" % (fixture_name, format))) - transaction.rollback(using=using) - transaction.leave_transaction_management(using=using) + if commit: + transaction.rollback(using=using) + transaction.leave_transaction_management(using=using) return if os.path.isabs(fixture_name): @@ -152,8 +153,9 @@ class Command(BaseCommand): fixture.close() self.stderr.write(self.style.ERROR("Multiple fixtures named '%s' in %s. Aborting.\n" % (fixture_name, humanize(fixture_dir)))) - transaction.rollback(using=using) - transaction.leave_transaction_management(using=using) + if commit: + transaction.rollback(using=using) + transaction.leave_transaction_management(using=using) return else: fixture_count += 1 @@ -178,8 +180,9 @@ class Command(BaseCommand): except Exception: import traceback fixture.close() - transaction.rollback(using=using) - transaction.leave_transaction_management(using=using) + if commit: + transaction.rollback(using=using) + transaction.leave_transaction_management(using=using) if show_traceback: traceback.print_exc() else: @@ -196,8 +199,9 @@ class Command(BaseCommand): self.stderr.write( self.style.ERROR("No fixture data found for '%s'. (File format may be invalid.)\n" % (fixture_name))) - transaction.rollback(using=using) - transaction.leave_transaction_management(using=using) + if commit: + transaction.rollback(using=using) + transaction.leave_transaction_management(using=using) return except Exception, e: |
