Ticket #4371: russels_070913_suggestions.diff

File russels_070913_suggestions.diff, 3.1 KB (added by Keith Bussell, 17 years ago)

Patch for django.core.management.commands.loaddata.py

  • loaddata.py

     
    5858                else:
    5959                    formats = []
    6060
    61             if verbosity > 0:
    62                 if formats:
     61            if formats:
     62                if verbosity > 0:
    6363                    print "Loading '%s' fixtures..." % fixture_name
    64                 else:
    65                     print "Skipping fixture '%s': %s is not a known serialization format" % (fixture_name, format)
     64            else:
     65                sys.stderr.write(
     66                    self.style.ERROR("Problem installing fixture '%s': %s is not a known serialization format." %
     67                         (fixture_name, format)))
     68                transaction.rollback()
     69                transaction.leave_transaction_management()
     70                return
    6671
    6772            for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']:
    6873                if verbosity > 1:
    6974                    print "Checking %s for fixtures..." % humanize(fixture_dir)
    7075
    7176                label_found = False
     77                local_count = [0, 0]
    7278                for format in formats:
    7379                    serializer = serializers.get_serializer(format)
    7480                    if verbosity > 1:
     
    8591                            transaction.leave_transaction_management()
    8692                            return
    8793                        else:
    88                             count[1] += 1
     94                            local_count[1] += 1
    8995                            if verbosity > 0:
    9096                                print "Installing %s fixture '%s' from %s." % \
    9197                                    (format, fixture_name, humanize(fixture_dir))
    9298                            try:
    9399                                objects = serializers.deserialize(format, fixture)
    94100                                for obj in objects:
    95                                     count[0] += 1
     101                                    local_count[0] += 1
    96102                                    models.add(obj.object.__class__)
    97103                                    obj.save()
    98104                                label_found = True
     
    109115                        if verbosity > 1:
    110116                            print "No %s fixture '%s' in %s." % \
    111117                                (format, fixture_name, humanize(fixture_dir))
     118               
     119                count[0] += local_count[0]
     120                count[1] += local_count[1]
     121                # If we found a fixture file to load, but no objects loaded, assume
     122                if local_count[1] > 0 and local_count[0] == 0:
     123                    sys.stderr.write(
     124                        self.style.ERROR("Empty fixture file '%s' found. (File format may be invalid.)" %
     125                            (fixture_name)))
     126                    transaction.rollback()
     127                    transaction.leave_transaction_management()
     128                    return
    112129
    113130        if count[0] > 0:
    114131            sequence_sql = connection.ops.sequence_reset_sql(self.style, models)
Back to Top