Opened 3 years ago

Last modified 3 years ago

#33023 closed Bug

InMemoryUploadedFile - opening with context manager multiple time is throwing error — at Initial Version

Reported by: Harsh Bhikadia Owned by: nobody
Component: Core (Other) Version: 3.2
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

What is the issue:
when "opening" the "uploaded file" with "context manager (like with file.open('rb') as f:) multiple times it is throwing exception

Explaination
Digging into the code, I realised that InMemoryUploadedFile overrides the open method from File instance - the implementation just "seeks to 0". Since the context manager will call the close method on "exit". When "opening" the file again (with or without context manager) it fails with "cannot seek(0) of already closed file"

Potential solution

  • Not sure why the "open" method was overridden - if not required then just should remove the "overridden method"
  • or making sure the file is "re-opened" (like in File) if closed

To conclude

Since the doc on `File` mentions that it could be used with "context manager" - I think this is unexpected behaviour and should be fixed.

I have been using Django for many years but new to contribution/issue reporting, so forgive me when I am being ignorant.

I am interested in fixing this myself if someone here gives me a green signal for it.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top