Loading django/core/files/storage.py +6 −2 Original line number Diff line number Diff line Loading @@ -37,13 +37,17 @@ class Storage(object): def save(self, name, content): """ Saves new content to the file specified by name. The content should be a proper File object, ready to be read from the beginning. Saves new content to the file specified by name. The content should be a proper File object or any python file-like object, ready to be read from the beginning. """ # Get the proper name for the file, as it will actually be saved. if name is None: name = content.name if not hasattr(content, 'chunks'): content = File(content) name = self.get_available_name(name) name = self._save(name, content) Loading tests/modeltests/files/tests.py +30 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ from __future__ import absolute_import import gzip import shutil import StringIO import tempfile from django.core.cache import cache Loading Loading @@ -102,6 +103,35 @@ class FileStorageTests(TestCase): obj4.random.save("random_file", ContentFile("random content")) self.assertTrue(obj4.random.name.endswith("/random_file")) def test_file_object(self): # Create sample file temp_storage.save('tests/example.txt', ContentFile('some content')) # Load it as python file object file_obj = open(temp_storage.path('tests/example.txt')) # Save it using storage and read its content temp_storage.save('tests/file_obj', file_obj) self.assertTrue(temp_storage.exists('tests/file_obj')) self.assertEqual( temp_storage.open('tests/file_obj').read(), 'some content') def test_stringio(self): # Test passing StringIO instance as content argument to save output = StringIO.StringIO() output.write('content') output.seek(0) # Save it and read written file temp_storage.save('tests/stringio', output) self.assertTrue(temp_storage.exists('tests/stringio')) self.assertEqual( temp_storage.open('tests/stringio').read(), 'content') class FileTests(unittest.TestCase): def test_context_manager(self): Loading Loading
django/core/files/storage.py +6 −2 Original line number Diff line number Diff line Loading @@ -37,13 +37,17 @@ class Storage(object): def save(self, name, content): """ Saves new content to the file specified by name. The content should be a proper File object, ready to be read from the beginning. Saves new content to the file specified by name. The content should be a proper File object or any python file-like object, ready to be read from the beginning. """ # Get the proper name for the file, as it will actually be saved. if name is None: name = content.name if not hasattr(content, 'chunks'): content = File(content) name = self.get_available_name(name) name = self._save(name, content) Loading
tests/modeltests/files/tests.py +30 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ from __future__ import absolute_import import gzip import shutil import StringIO import tempfile from django.core.cache import cache Loading Loading @@ -102,6 +103,35 @@ class FileStorageTests(TestCase): obj4.random.save("random_file", ContentFile("random content")) self.assertTrue(obj4.random.name.endswith("/random_file")) def test_file_object(self): # Create sample file temp_storage.save('tests/example.txt', ContentFile('some content')) # Load it as python file object file_obj = open(temp_storage.path('tests/example.txt')) # Save it using storage and read its content temp_storage.save('tests/file_obj', file_obj) self.assertTrue(temp_storage.exists('tests/file_obj')) self.assertEqual( temp_storage.open('tests/file_obj').read(), 'some content') def test_stringio(self): # Test passing StringIO instance as content argument to save output = StringIO.StringIO() output.write('content') output.seek(0) # Save it and read written file temp_storage.save('tests/stringio', output) self.assertTrue(temp_storage.exists('tests/stringio')) self.assertEqual( temp_storage.open('tests/stringio').read(), 'content') class FileTests(unittest.TestCase): def test_context_manager(self): Loading