Commit c6e662cd authored by Karen Tracey's avatar Karen Tracey
Browse files

[1.1.X] Fixed #12898: Reverted a change that assumed the file system encoding...

[1.1.X] Fixed #12898: Reverted a change that assumed the file system encoding was utf8, and changed a test to demonstrate how that assumption corrupted uploaded non-ASCII file names on systems that don't use utf8 as their file system encoding (Windows for one, specifically). Thanks for the report to vrehak. 

r12661 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12662 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent b50b3cf7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ 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
@@ -212,7 +212,7 @@ class FileSystemStorage(Storage):
            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))
+6 −5
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import os
from django.core.files.uploadedfile import UploadedFile
from django.http import HttpResponse, HttpResponseServerError
from django.utils import simplejson
from models import FileModel
from models import FileModel, UPLOAD_TO
from uploadhandler import QuotaUploadHandler, ErroringUploadHandler
from django.utils.hashcompat import sha_constructor
from tests import UNICODE_FILENAME
@@ -62,7 +62,8 @@ def file_upload_unicode_name(request):
    # through file save.
    uni_named_file = request.FILES['file_unicode']
    obj = FileModel.objects.create(testfile=uni_named_file)
    if not obj.testfile.name.endswith(uni_named_file.name):
    full_name = u'%s/%s' % (UPLOAD_TO, uni_named_file.name)
    if not os.path.exists(full_name):
        response = HttpResponseServerError()

    # Cleanup the object with its exotic file name immediately.