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)
Exemple #4
0
    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