Loading django/core/files/base.py +2 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,8 @@ class File(FileProxyMixin): if name is None: name = getattr(file, 'name', None) self.name = name self.mode = getattr(file, 'mode', None) if hasattr(file, 'mode'): self.mode = file.mode def __str__(self): return smart_str(self.name or '') Loading tests/modeltests/files/tests.py +12 −1 Original line number Diff line number Diff line from __future__ import absolute_import import gzip import shutil import tempfile Loading @@ -8,11 +9,12 @@ from django.core.files import File from django.core.files.base import ContentFile from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase from django.utils import unittest from .models import Storage, temp_storage, temp_storage_location class FileTests(TestCase): class FileStorageTests(TestCase): def tearDown(self): shutil.rmtree(temp_storage_location) Loading Loading @@ -106,6 +108,8 @@ class FileTests(TestCase): obj3.default.delete() obj4.random.delete() class FileTests(unittest.TestCase): def test_context_manager(self): orig_file = tempfile.TemporaryFile() base_file = File(orig_file) Loading @@ -114,3 +118,10 @@ class FileTests(TestCase): self.assertFalse(f.closed) self.assertTrue(f.closed) self.assertTrue(orig_file.closed) def test_file_mode(self): # Should not set mode to None if it is not present. # See #14681, stdlib gzip module crashes if mode is set to None file = SimpleUploadedFile("mode_test.txt", "content") self.assertFalse(hasattr(file, 'mode')) g = gzip.GzipFile(fileobj=file) Loading
django/core/files/base.py +2 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,8 @@ class File(FileProxyMixin): if name is None: name = getattr(file, 'name', None) self.name = name self.mode = getattr(file, 'mode', None) if hasattr(file, 'mode'): self.mode = file.mode def __str__(self): return smart_str(self.name or '') Loading
tests/modeltests/files/tests.py +12 −1 Original line number Diff line number Diff line from __future__ import absolute_import import gzip import shutil import tempfile Loading @@ -8,11 +9,12 @@ from django.core.files import File from django.core.files.base import ContentFile from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase from django.utils import unittest from .models import Storage, temp_storage, temp_storage_location class FileTests(TestCase): class FileStorageTests(TestCase): def tearDown(self): shutil.rmtree(temp_storage_location) Loading Loading @@ -106,6 +108,8 @@ class FileTests(TestCase): obj3.default.delete() obj4.random.delete() class FileTests(unittest.TestCase): def test_context_manager(self): orig_file = tempfile.TemporaryFile() base_file = File(orig_file) Loading @@ -114,3 +118,10 @@ class FileTests(TestCase): self.assertFalse(f.closed) self.assertTrue(f.closed) self.assertTrue(orig_file.closed) def test_file_mode(self): # Should not set mode to None if it is not present. # See #14681, stdlib gzip module crashes if mode is set to None file = SimpleUploadedFile("mode_test.txt", "content") self.assertFalse(hasattr(file, 'mode')) g = gzip.GzipFile(fileobj=file)