Ticket #7614: initial_patch.diff
| File initial_patch.diff, 6.2 kB (added by axiak, 5 months ago) |
|---|
-
django/db/models/fields/__init__.py
old new 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
old new 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
old new 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
old new 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
old new 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``
