mirror of
https://github.com/django/django.git
synced 2025-11-07 07:15:35 +00:00
Fixed #10258: handle duplicate file names better.
Instead of just continually appending "_" to duplicate file names, Django's default storage now appends `_1`, `_2`, `_3`, etc. Thanks to ianschenck and Thilo. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12552 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import errno
|
||||
import urlparse
|
||||
import itertools
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ImproperlyConfigured, SuspiciousOperation
|
||||
@@ -65,13 +66,14 @@ class Storage(object):
|
||||
"""
|
||||
dir_name, file_name = os.path.split(name)
|
||||
file_root, file_ext = os.path.splitext(file_name)
|
||||
# If the filename already exists, keep adding an underscore (before the
|
||||
# file extension, if one exists) to the filename until the generated
|
||||
# If the filename already exists, add an underscore and a number (before
|
||||
# the file extension, if one exists) to the filename until the generated
|
||||
# filename doesn't exist.
|
||||
count = itertools.count(1)
|
||||
while self.exists(name):
|
||||
file_root += '_'
|
||||
# file_ext includes the dot.
|
||||
name = os.path.join(dir_name, file_root + file_ext)
|
||||
name = os.path.join(dir_name, "%s_%s%s" % (file_root, count.next(), file_ext))
|
||||
|
||||
return name
|
||||
|
||||
def path(self, name):
|
||||
|
||||
Reference in New Issue
Block a user