From 344383284cf1a51fa646bc8926014f78ba512a56 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 19 Jul 2008 18:47:59 +0000 Subject: [PATCH] Fixed #6009 -- Added regression tests to show that uploading non-ASCII filenames now works properly. Patch from Leah Culver. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7987 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/forms/fields.py | 3 +++ tests/regressiontests/forms/forms.py | 4 ++++ tests/regressiontests/forms/models.py | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py index c70ff2dff3..838ba21073 100644 --- a/tests/regressiontests/forms/fields.py +++ b/tests/regressiontests/forms/fields.py @@ -802,6 +802,9 @@ ValidationError: [u'The submitted file is empty.'] >>> type(f.clean(SimpleUploadedFile('name', 'Some File Content'))) +>>> type(f.clean(SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'))) + + >>> type(f.clean(SimpleUploadedFile('name', 'Some File Content'), 'files/test4.pdf')) diff --git a/tests/regressiontests/forms/forms.py b/tests/regressiontests/forms/forms.py index 6e6e4f79bf..d834bdaccc 100644 --- a/tests/regressiontests/forms/forms.py +++ b/tests/regressiontests/forms/forms.py @@ -1480,6 +1480,10 @@ not request.POST. >>> f.is_valid() True +>>> f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह')}, auto_id=False) +>>> print f +File1: + # Basic form processing in a view ############################################# >>> from django.template import Template, Context diff --git a/tests/regressiontests/forms/models.py b/tests/regressiontests/forms/models.py index 98b9233d80..fcffcb8263 100644 --- a/tests/regressiontests/forms/models.py +++ b/tests/regressiontests/forms/models.py @@ -1,6 +1,10 @@ +# -*- coding: utf-8 -*- import datetime from django.db import models +# Can't import as "forms" due to implementation details in the test suite (the +# current file is called "forms" an is already imported). +from django import forms as django_forms class BoundaryModel(models.Model): positive_integer = models.PositiveIntegerField(null=True, blank=True) @@ -14,8 +18,23 @@ class ChoiceModel(models.Model): """For ModelChoiceField and ModelMultipleChoiceField tests.""" name = models.CharField(max_length=10) +class FileModel(models.Model): + file = models.FileField(upload_to='/') + +class FileForm(django_forms.Form): + file1 = django_forms.FileField() + __test__ = {'API_TESTS': """ >>> from django.forms import form_for_model, form_for_instance +>>> from django.core.files.uploadedfile import SimpleUploadedFile + +# FileModel with unicode filename and data ######################### +>>> f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह')}, auto_id=False) +>>> f.is_valid() +True +>>> f.cleaned_data +{'file1': } +>>> m = FileModel.objects.create(file=f.cleaned_data['file1']) # Boundary conditions on a PostitiveIntegerField ######################### >>> BoundaryForm = form_for_model(BoundaryModel)