Ticket #17853: loaddata_refactored.diff

File loaddata_refactored.diff, 2.8 KB (added by hoffmaje, 3 years ago)
  • django/core/management/commands/loaddata.py

     
    3333            default=DEFAULT_DB_ALIAS, help='Nominates a specific database to load '
    3434                'fixtures into. Defaults to the "default" database.'),
    3535    )
     36   
     37    def _rollback_transaction(self, using):
     38        transaction.rollback(using=using)
     39        transaction.leave_transaction_management(using=using)
    3640
    3741    def handle(self, *fixture_labels, **options):
    3842        using = options.get('database')
     
    134138                            self.style.ERROR("Problem installing fixture '%s': %s is not a known serialization format.\n" %
    135139                                (fixture_name, format)))
    136140                        if commit:
    137                             transaction.rollback(using=using)
    138                             transaction.leave_transaction_management(using=using)
     141                            self._rollback_transaction(using)
    139142                        return
    140143
    141144                    if os.path.isabs(fixture_name):
     
    174177                                        self.stderr.write(self.style.ERROR("Multiple fixtures named '%s' in %s. Aborting.\n" %
    175178                                            (fixture_name, humanize(fixture_dir))))
    176179                                        if commit:
    177                                             transaction.rollback(using=using)
    178                                             transaction.leave_transaction_management(using=using)
     180                                            self._rollback_transaction(using)
    179181                                        return
    180182
    181183                                    fixture_count += 1
     
    216218                                        self.style.ERROR("No fixture data found for '%s'. (File format may be invalid.)\n" %
    217219                                            (fixture_name)))
    218220                                    if commit:
    219                                         transaction.rollback(using=using)
    220                                         transaction.leave_transaction_management(using=using)
     221                                        self._rollback_transaction(using)
    221222                                    return
    222223
    223224            # Since we disabled constraint checks, we must manually check for
     
    229230            raise
    230231        except Exception:
    231232            if commit:
    232                 transaction.rollback(using=using)
    233                 transaction.leave_transaction_management(using=using)
     233                self._rollback_transaction(using)
    234234            if show_traceback:
    235235                traceback.print_exc()
    236236            else:
Back to Top