Refs #27777 -- Improved docs/added test for File context manager change.
This commit is contained in:
parent
eee34ef64c
commit
6bb3b2bff4
|
@ -56,8 +56,11 @@ The ``File`` class
|
||||||
was originally opened with; ``None`` means to reopen with the original
|
was originally opened with; ``None`` means to reopen with the original
|
||||||
mode.
|
mode.
|
||||||
|
|
||||||
Returns ``self``, so that it can be used similar to Python's
|
It can be used as a context manager, e.g. ``with file.open() as f:``.
|
||||||
built-in :func:`python:open()` with the ``with`` statement.
|
|
||||||
|
.. versionchanged:: 2.0
|
||||||
|
|
||||||
|
Context manager support was added.
|
||||||
|
|
||||||
.. method:: __iter__()
|
.. method:: __iter__()
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,8 @@ Email
|
||||||
File Storage
|
File Storage
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
* ...
|
* :meth:`File.open() <django.core.files.File.open>` can be used as a context
|
||||||
|
manager, e.g. ``with file.open() as f:``.
|
||||||
|
|
||||||
File Uploads
|
File Uploads
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
|
@ -3,6 +3,7 @@ import sys
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from django.core.files import temp
|
from django.core.files import temp
|
||||||
|
from django.core.files.base import ContentFile
|
||||||
from django.core.files.uploadedfile import TemporaryUploadedFile
|
from django.core.files.uploadedfile import TemporaryUploadedFile
|
||||||
from django.db.utils import IntegrityError
|
from django.db.utils import IntegrityError
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
|
@ -83,3 +84,13 @@ class FileFieldTests(TestCase):
|
||||||
tmp_file_path = tmp_file.temporary_file_path()
|
tmp_file_path = tmp_file.temporary_file_path()
|
||||||
Document.objects.create(myfile=tmp_file)
|
Document.objects.create(myfile=tmp_file)
|
||||||
self.assertFalse(os.path.exists(tmp_file_path), 'Temporary file still exists')
|
self.assertFalse(os.path.exists(tmp_file_path), 'Temporary file still exists')
|
||||||
|
|
||||||
|
def test_open_returns_self(self):
|
||||||
|
"""
|
||||||
|
FieldField.open() returns self so it can be used as a context manager.
|
||||||
|
"""
|
||||||
|
d = Document.objects.create(myfile='something.txt')
|
||||||
|
# Replace the FileField's file with an in-memory ContentFile, so that
|
||||||
|
# open() doesn't write to disk.
|
||||||
|
d.myfile.file = ContentFile(b'', name='bla')
|
||||||
|
self.assertEqual(d.myfile, d.myfile.open())
|
||||||
|
|
Loading…
Reference in New Issue