Commit 275811a9 authored by Claude Paroz's avatar Claude Paroz
Browse files

Adapted fixture read mode to file type

Binary mode added in ed532a6a is not supported by ZipFile.
Refs #22399.
parent 6b2ce38c
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -76,13 +76,14 @@ class Command(BaseCommand):
        self.models = set()

        self.serialization_formats = serializers.get_public_serializer_formats()
        # Forcing binary mode may be revisited after dropping Python 2 support (see #22399)
        self.compression_formats = {
            None: open,
            'gz': gzip.GzipFile,
            'zip': SingleZipReader
            None: (open, 'rb'),
            'gz': (gzip.GzipFile, 'rb'),
            'zip': (SingleZipReader, 'r'),
        }
        if has_bz2:
            self.compression_formats['bz2'] = bz2.BZ2File
            self.compression_formats['bz2'] = (bz2.BZ2File, 'r')

        with connection.constraint_checks_disabled():
            for fixture_label in fixture_labels:
@@ -124,9 +125,8 @@ class Command(BaseCommand):
        """
        for fixture_file, fixture_dir, fixture_name in self.find_fixtures(fixture_label):
            _, ser_fmt, cmp_fmt = self.parse_name(os.path.basename(fixture_file))
            open_method = self.compression_formats[cmp_fmt]
            # Forcing binary mode may be revisited after dropping Python 2 support (see #22399)
            fixture = open_method(fixture_file, 'rb')
            open_method, mode = self.compression_formats[cmp_fmt]
            fixture = open_method(fixture_file, mode)
            try:
                self.fixture_count += 1
                objects_in_fixture = 0