mirror of
https://github.com/django/django.git
synced 2025-08-04 02:48:35 +00:00
Fixed #24105 -- Called Storage.get_valid_name() when upload_to is callable
This commit is contained in:
parent
7c7b855106
commit
9de9c24017
5 changed files with 39 additions and 6 deletions
|
@ -25,6 +25,12 @@ class OldStyleFSStorage(FileSystemStorage):
|
|||
return super(OldStyleFSStorage, self).save(name, content)
|
||||
|
||||
|
||||
class CustomValidNameStorage(FileSystemStorage):
|
||||
def get_valid_name(self, name):
|
||||
# mark the name to show that this was called
|
||||
return name + '_valid'
|
||||
|
||||
|
||||
temp_storage_location = tempfile.mkdtemp()
|
||||
temp_storage = FileSystemStorage(location=temp_storage_location)
|
||||
|
||||
|
@ -41,6 +47,10 @@ class Storage(models.Model):
|
|||
normal = models.FileField(storage=temp_storage, upload_to='tests')
|
||||
custom = models.FileField(storage=temp_storage, upload_to=custom_upload_to)
|
||||
random = models.FileField(storage=temp_storage, upload_to=random_upload_to)
|
||||
custom_valid_name = models.FileField(
|
||||
storage=CustomValidNameStorage(location=temp_storage_location),
|
||||
upload_to=random_upload_to,
|
||||
)
|
||||
default = models.FileField(storage=temp_storage, upload_to='tests', default='tests/default.txt')
|
||||
empty = models.FileField(storage=temp_storage)
|
||||
limited_length = models.FileField(storage=temp_storage, upload_to='tests', max_length=20)
|
||||
|
|
|
@ -597,6 +597,16 @@ class FileFieldStorageTests(SimpleTestCase):
|
|||
self.assertTrue(obj.random.name.endswith("/random_file"))
|
||||
obj.random.close()
|
||||
|
||||
def test_custom_valid_name_callable_upload_to(self):
|
||||
"""
|
||||
Storage.get_valid_name() should be called when upload_to is a callable.
|
||||
"""
|
||||
obj = Storage()
|
||||
obj.custom_valid_name.save("random_file", ContentFile("random content"))
|
||||
# CustomValidNameStorage.get_valid_name() appends '_valid' to the name
|
||||
self.assertTrue(obj.custom_valid_name.name.endswith("/random_file_valid"))
|
||||
obj.custom_valid_name.close()
|
||||
|
||||
def test_filefield_pickling(self):
|
||||
# Push an object into the cache to make sure it pickles properly
|
||||
obj = Storage()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue