You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
add a attachment file which needs to be larger than FILE_UPLOAD_MAX_MEMORY_SIZE (default 2.5 MB) so that django.core.files.uploadhandler.TemporaryFileUploadHandler is used
push the Preview button
push the Submit button
Results into:
...
File "D:\Python\virtualenv\test\lib\site-packages\machina\apps\forum_conversation\forum_attachments\forms.py", line 39, in save
super().save(commit)
File "D:\Python\virtualenv\test\lib\site-packages\django\forms\models.py", line 681, in save
return self.save_existing_objects(commit) + self.save_new_objects(commit)
File "D:\Python\virtualenv\test\lib\site-packages\django\forms\models.py", line 819, in save_new_objects
self.new_objects.append(self.save_new(form, commit=commit))
File "D:\Python\virtualenv\test\lib\site-packages\django\forms\models.py", line 658, in save_new
return form.save(commit=commit)
File "D:\Python\virtualenv\test\lib\site-packages\django\forms\models.py", line 468, in save
self.instance.save()
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\base.py", line 739, in save
self.save_base(using=using, force_insert=force_insert,
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\base.py", line 776, in save_base
updated = self._save_table(
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\base.py", line 881, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\base.py", line 919, in _do_insert
return manager._insert(
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\query.py", line 1270, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\sql\compiler.py", line 1415, in execute_sql
for sql, params in self.as_sql():
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\sql\compiler.py", line 1358, in as_sql
value_rows = [
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\sql\compiler.py", line 1359, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\sql\compiler.py", line 1359, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\sql\compiler.py", line 1310, in pre_save_val
return field.pre_save(obj, add=True)
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\fields\files.py", line 302, in pre_save
file.save(file.name, file.file, save=False)
File "D:\Python\virtualenv\test\lib\site-packages\django\db\models\fields\files.py", line 89, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "D:\Python\virtualenv\test\lib\site-packages\django\core\files\storage.py", line 54, in save
name = self._save(name, content)
File "D:\Python\virtualenv\test\lib\site-packages\django\core\files\storage.py", line 274, in _save
file_move_safe(content.temporary_file_path(), full_path)
File "D:\Python\virtualenv\test\lib\site-packages\django\core\files\uploadedfile.py", line 69, in temporary_file_path
return self.file.name
AttributeError: '_io.BytesIO' object has no attribute 'name'
Steps to reproduce:
FILE_UPLOAD_MAX_MEMORY_SIZE
(default 2.5 MB) so thatdjango.core.files.uploadhandler.TemporaryFileUploadHandler
is usedResults into:
One can track it down to the forum attachments cache where the
TemporaryUploadedFile.file
attribute (usually adjango.core.files.temp.TemporaryFile
instance) gets directly replaced with aBytesIO
instance at https://github.com/ellmetha/django-machina/blob/main/machina/apps/forum_conversation/forum_attachments/cache.py#L104Later on
self.file.name
gets called which fails forBytesIO
with the exception above.Replacing the line
upload.file = f
withupload.file.write(f.getbuffer())
fixes it for me.This issue is probably the same as issue #64.
The text was updated successfully, but these errors were encountered: