Ticket #7614: initial_patch.diff
File initial_patch.diff, 6.2 KB (added by , 16 years ago) |
---|
-
django/db/models/fields/__init__.py
766 766 def get_db_prep_save(self, value): 767 767 "Returns field's value prepared for saving into a database." 768 768 # Need to convert UploadedFile objects provided via a form to unicode for database insertion 769 if value is None: 769 if hasattr(value, 'file_name'): 770 raise Exception("Yep %s" % value) 771 return value.file_name 772 elif value is None: 770 773 return None 771 return unicode(value) 774 else: 775 return unicode(value) 772 776 773 777 def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True): 774 778 field_list = Field.get_manipulator_fields(self, opts, manipulator, change, name_prefix, rel, follow) … … 857 861 return os.path.normpath(f) 858 862 859 863 def save_form_data(self, instance, data): 860 from django. newforms.fieldsimport UploadedFile864 from django.core.files.uploadedfile import UploadedFile 861 865 if data and isinstance(data, UploadedFile): 862 getattr(instance, "save_%s_file" % self.name)(data.file name, data.data, save=False)866 getattr(instance, "save_%s_file" % self.name)(data.file_name, data, save=False) 863 867 864 868 def formfield(self, **kwargs): 865 869 defaults = {'form_class': forms.FileField} -
django/newforms/fields.py
27 27 28 28 from util import ErrorList, ValidationError 29 29 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateTimeInput 30 from django.core.files.uploadedfile import SimpleUploadedFile 30 31 31 32 32 __all__ = ( 33 33 'Field', 'CharField', 'IntegerField', 34 34 'DEFAULT_DATE_INPUT_FORMATS', 'DateField', … … 460 460 category = DeprecationWarning, 461 461 stacklevel = 2 462 462 ) 463 data = SimpleUploadedFile(data['filename'], data['content']) 463 464 464 465 try: 465 466 file_name = data.file_name 466 467 file_size = data.file_size 467 468 except AttributeError: 468 try: 469 file_name = data.get('filename') 470 file_size = bool(data['content']) 471 except (AttributeError, KeyError): 472 raise ValidationError(self.error_messages['invalid']) 469 raise ValidationError(self.error_messages['invalid']) 473 470 474 471 if not file_name: 475 472 raise ValidationError(self.error_messages['invalid']) 476 473 if not file_size: 477 474 raise ValidationError(self.error_messages['empty']) 478 475 479 return UploadedFile(file_name, data)476 return data 480 477 481 478 class ImageField(FileField): 482 479 default_error_messages = { -
tests/modeltests/model_forms/models.py
803 803 >>> f.is_valid() 804 804 True 805 805 >>> type(f.cleaned_data['file']) 806 <class 'django. newforms.fields.UploadedFile'>806 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 807 807 >>> instance = f.save() 808 808 >>> instance.file 809 809 u'...test1.txt' … … 814 814 >>> f.is_valid() 815 815 True 816 816 >>> type(f.cleaned_data['file']) 817 <class 'django. newforms.fields.UploadedFile'>817 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 818 818 >>> instance = f.save() 819 819 >>> instance.file 820 820 u'...test1.txt' … … 906 906 >>> f.is_valid() 907 907 True 908 908 >>> type(f.cleaned_data['image']) 909 <class 'django. newforms.fields.UploadedFile'>909 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 910 910 >>> instance = f.save() 911 911 >>> instance.image 912 912 u'...test.png' … … 918 918 >>> f.is_valid() 919 919 True 920 920 >>> type(f.cleaned_data['image']) 921 <class 'django. newforms.fields.UploadedFile'>921 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 922 922 >>> instance = f.save() 923 923 >>> instance.image 924 924 u'...test.png' -
tests/regressiontests/forms/fields.py
800 800 ValidationError: [u'The submitted file is empty.'] 801 801 802 802 >>> type(f.clean(SimpleUploadedFile('name', 'Some File Content'))) 803 <class 'django. newforms.fields.UploadedFile'>803 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 804 804 805 805 >>> type(f.clean(SimpleUploadedFile('name', 'Some File Content'), 'files/test4.pdf')) 806 <class 'django. newforms.fields.UploadedFile'>806 <class 'django.core.files.uploadedfile.SimpleUploadedFile'> 807 807 808 808 # URLField ################################################################## 809 809 -
docs/newforms.txt
1331 1331 * Validates that non-empty file data has been bound to the form. 1332 1332 * Error message keys: ``required``, ``invalid``, ``missing``, ``empty`` 1333 1333 1334 An ``UploadedFile`` object has two attributes: 1334 To learn more about the ``UploadedFile`` object, see the `file uploads documentation`_. 1335 1335 1336 ====================== ====================================================1337 Attribute Description1338 ====================== ====================================================1339 ``filename`` The name of the file, provided by the uploading1340 client.1341 1342 ``content`` The array of bytes comprising the file content.1343 ====================== ====================================================1344 1345 The string representation of an ``UploadedFile`` is the same as the filename1346 attribute.1347 1348 1336 When you use a ``FileField`` on a form, you must also remember to 1349 1337 `bind the file data to the form`_. 1350 1338 1339 .. _file uploads documentation: ../upload_handling/ 1351 1340 .. _`bind the file data to the form`: `Binding uploaded files to a form`_ 1352 1341 1353 1342 ``FilePathField``