Django

Code

Ticket #4371: russels_070913_suggestions.diff

File russels_070913_suggestions.diff, 3.1 kB (added by keithb, 1 year ago)

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

  • loaddata.py

    old new  
    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)