#29510: QueryDict.copy() returns closed files when the type of file is
TemporaryUploadedFile
-------------------------------------+-------------------------------------
               Reporter:  Liquid     |          Owner:  nobody
  Scorpio                            |
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  1.11
  Uncategorized                      |       Keywords:  QueryDict, upload,
               Severity:  Normal     |  file
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 When uploaded file size is greater than `FILE_UPLOAD_MAX_MEMORY_SIZE`,
 Django uses `TemporaryUploadedFile` to represent the file object. However,
 when executing `.copy()` on a `QueryDict` containing such a file, the
 returned object has the file but it is in closed state (`seekable()` is
 `False`).

 **Expected**: File should present in open state (`seekable()` should be
 `True`)

 Below is a reproducible example and also contains version details:

 {{{
 Python 2.7.12 (default, Dec  4 2017, 14:50:18)
 In [18]: import django

 In [19]: django.VERSION
 Out[19]: (1, 11, 11, u'final', 0)

 In [20]: from django.http.request import QueryDict

 In [21]: from django.core.files.uploadedfile import TemporaryUploadedFile

 In [22]: d = QueryDict(mutable=True)

 In [23]: f = TemporaryUploadedFile('test.jpg', 'image/jpeg', 100, 'utf-8')

 In [24]: f.seekable()
 Out[24]: True

 In [25]: d.appendlist('image', f)

 In [26]: d['image'].seekable()
 Out[25]: True

 In [27]: c = d.copy()

 In [28]: c['image'].seekable()
 Out[28]: False

 In [30]:

 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29510>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/056.be5f1f9f070838cc7aa75fc8be71846e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to