diff -r b758351d191f -r cc9b7e14412b web/lib/django/core/files/storage.py --- a/web/lib/django/core/files/storage.py Wed May 19 17:43:59 2010 +0200 +++ b/web/lib/django/core/files/storage.py Tue May 25 02:43:45 2010 +0200 @@ -1,12 +1,13 @@ import os import errno import urlparse +import itertools from django.conf import settings from django.core.exceptions import ImproperlyConfigured, SuspiciousOperation from django.core.files import locks, File from django.core.files.move import file_move_safe -from django.utils.encoding import force_unicode, smart_str +from django.utils.encoding import force_unicode from django.utils.functional import LazyObject from django.utils.importlib import import_module from django.utils.text import get_valid_filename @@ -65,13 +66,14 @@ """ 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): @@ -118,10 +120,6 @@ """ raise NotImplementedError() - # Needed by django.utils.functional.LazyObject (via DefaultStorage). - def get_all_members(self): - return self.__members__ - class FileSystemStorage(Storage): """ Standard filesystem storage @@ -212,7 +210,7 @@ path = safe_join(self.location, name) except ValueError: raise SuspiciousOperation("Attempted access to '%s' denied." % name) - return smart_str(os.path.normpath(path)) + return os.path.normpath(path) def size(self, name): return os.path.getsize(self.path(name))