def value_from_datadict(self, data, files, name): "File widgets take data from FILES, not POST" if data.get(name, None): file_path = data[name] file_field = self.get_file_field() file_obj = file_field.storage.open(file_path) file_copy = FieldFile(None, file_field, file_path)#file_field.attr_class(None, file_field, file_path) file_copy.file = file_obj file_copy._committed = True return file_copy return None
def test_generic(self): field = FileField(name='test', upload_to=self.upload_to) fake_model = type(str('fake'), (object,), {field.name: None}) _file = FieldFile(field=field, instance=fake_model(), name='') _file._committed = False with open(self.archive, 'rb') as f: _file.save('test.zip', ContentFile(f.read()), save=False) self.assertEqual(_file.name, 'archive/da39a3ee5e6b4b0d3255bfef95601890afd80709.zip') _file.delete(save=False)
def test_generic(self): field = FileField(name='test', upload_to=self.upload_to) fake_model = type(str('fake'), (object, ), {field.name: None}) _file = FieldFile(field=field, instance=fake_model(), name='') _file._committed = False with open(self.archive, 'rb') as f: _file.save('test.zip', ContentFile(f.read()), save=False) self.assertEqual( _file.name, 'archive/da39a3ee5e6b4b0d3255bfef95601890afd80709.zip') _file.delete(save=False)
def get_encrypted_value(self, value: FieldFile, encryption_key: str): file_name = value.name value.delete(save=False) file = self.get_replacement_file(file_name) if func_supports_parameter(value.storage.save, 'max_length'): value.name = value.storage.save(file_name, file, max_length=value.field.max_length) else: # Backwards compatibility removed in Django 1.10 value.name = value.storage.save(file_name, file) setattr(value.instance, value.field.name, value.name) value._size = file.size # Django 1.8 + 1.9 value._committed = True file.close() return value