Kaydet (Commit) 1bb6ecf6 authored tarafından Tim Graham's avatar Tim Graham

Refs #9893 -- Removed shims for lack of max_length support in file storage per…

Refs #9893 -- Removed shims for lack of max_length support in file storage per deprecation timeline.
üst 6a70cb53
import errno import errno
import os import os
import warnings
from datetime import datetime from datetime import datetime
from django.conf import settings from django.conf import settings
...@@ -10,10 +9,8 @@ from django.core.files.move import file_move_safe ...@@ -10,10 +9,8 @@ from django.core.files.move import file_move_safe
from django.utils._os import abspathu, safe_join from django.utils._os import abspathu, safe_join
from django.utils.crypto import get_random_string from django.utils.crypto import get_random_string
from django.utils.deconstruct import deconstructible from django.utils.deconstruct import deconstructible
from django.utils.deprecation import RemovedInDjango110Warning
from django.utils.encoding import filepath_to_uri, force_text from django.utils.encoding import filepath_to_uri, force_text
from django.utils.functional import LazyObject from django.utils.functional import LazyObject
from django.utils.inspect import func_supports_parameter
from django.utils.module_loading import import_string from django.utils.module_loading import import_string
from django.utils.six.moves.urllib.parse import urljoin from django.utils.six.moves.urllib.parse import urljoin
from django.utils.text import get_valid_filename from django.utils.text import get_valid_filename
...@@ -49,17 +46,7 @@ class Storage(object): ...@@ -49,17 +46,7 @@ class Storage(object):
if not hasattr(content, 'chunks'): if not hasattr(content, 'chunks'):
content = File(content) content = File(content)
if func_supports_parameter(self.get_available_name, 'max_length'): name = self.get_available_name(name, max_length=max_length)
name = self.get_available_name(name, max_length=max_length)
else:
warnings.warn(
'Backwards compatibility for storage backends without '
'support for the `max_length` argument in '
'Storage.get_available_name() will be removed in Django 1.10.',
RemovedInDjango110Warning, stacklevel=2
)
name = self.get_available_name(name)
name = self._save(name, content) name = self._save(name, content)
# Store filenames with forward slashes, even on Windows # Store filenames with forward slashes, even on Windows
......
import datetime import datetime
import os import os
import warnings
from django import forms from django import forms
from django.core import checks from django.core import checks
...@@ -10,9 +9,7 @@ from django.core.files.storage import default_storage ...@@ -10,9 +9,7 @@ from django.core.files.storage import default_storage
from django.db.models import signals from django.db.models import signals
from django.db.models.fields import Field from django.db.models.fields import Field
from django.utils import six from django.utils import six
from django.utils.deprecation import RemovedInDjango110Warning
from django.utils.encoding import force_str, force_text from django.utils.encoding import force_str, force_text
from django.utils.inspect import func_supports_parameter
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
...@@ -88,18 +85,7 @@ class FieldFile(File): ...@@ -88,18 +85,7 @@ class FieldFile(File):
def save(self, name, content, save=True): def save(self, name, content, save=True):
name = self.field.generate_filename(self.instance, name) name = self.field.generate_filename(self.instance, name)
self.name = self.storage.save(name, content, max_length=self.field.max_length)
if func_supports_parameter(self.storage.save, 'max_length'):
self.name = self.storage.save(name, content, max_length=self.field.max_length)
else:
warnings.warn(
'Backwards compatibility for storage backends without '
'support for the `max_length` argument in '
'Storage.save() will be removed in Django 1.10.',
RemovedInDjango110Warning, stacklevel=2
)
self.name = self.storage.save(name, content)
setattr(self.instance, self.field.name, self.name) setattr(self.instance, self.field.name, self.name)
# Update the filesize cache # Update the filesize cache
......
...@@ -114,7 +114,3 @@ free unique filename cannot be found, a :exc:`SuspiciousFileOperation ...@@ -114,7 +114,3 @@ free unique filename cannot be found, a :exc:`SuspiciousFileOperation
If a file with ``name`` already exists, an underscore plus a random 7 character If a file with ``name`` already exists, an underscore plus a random 7 character
alphanumeric string is appended to the filename before the extension. alphanumeric string is appended to the filename before the extension.
.. versionchanged:: 1.8
The ``max_length`` argument was added.
...@@ -118,10 +118,6 @@ The Storage Class ...@@ -118,10 +118,6 @@ The Storage Class
7 character alphanumeric string is appended to the filename before 7 character alphanumeric string is appended to the filename before
the extension. the extension.
.. versionchanged:: 1.8
The ``max_length`` argument was added.
.. method:: get_valid_name(name) .. method:: get_valid_name(name)
Returns a filename based on the ``name`` parameter that's suitable Returns a filename based on the ``name`` parameter that's suitable
...@@ -168,10 +164,6 @@ The Storage Class ...@@ -168,10 +164,6 @@ The Storage Class
:class:`django.core.files.File` or of a subclass of :class:`django.core.files.File` or of a subclass of
:class:`~django.core.files.File`. :class:`~django.core.files.File`.
.. versionchanged:: 1.8
The ``max_length`` argument was added.
.. method:: size(name) .. method:: size(name)
Returns the total size, in bytes, of the file referenced by ``name``. Returns the total size, in bytes, of the file referenced by ``name``.
......
...@@ -12,19 +12,6 @@ from django.core.files.storage import FileSystemStorage ...@@ -12,19 +12,6 @@ from django.core.files.storage import FileSystemStorage
from django.db import models from django.db import models
class OldStyleFSStorage(FileSystemStorage):
"""
Storage backend without support for the ``max_length`` argument in
``get_available_name()`` and ``save()``; for backward-compatibility and
deprecation testing.
"""
def get_available_name(self, name):
return name
def save(self, name, content):
return super(OldStyleFSStorage, self).save(name, content)
class CustomValidNameStorage(FileSystemStorage): class CustomValidNameStorage(FileSystemStorage):
def get_valid_name(self, name): def get_valid_name(self, name):
# mark the name to show that this was called # mark the name to show that this was called
...@@ -55,7 +42,3 @@ class Storage(models.Model): ...@@ -55,7 +42,3 @@ class Storage(models.Model):
empty = models.FileField(storage=temp_storage) empty = models.FileField(storage=temp_storage)
limited_length = models.FileField(storage=temp_storage, upload_to='tests', max_length=20) limited_length = models.FileField(storage=temp_storage, upload_to='tests', max_length=20)
extended_length = models.FileField(storage=temp_storage, upload_to='tests', max_length=300) extended_length = models.FileField(storage=temp_storage, upload_to='tests', max_length=300)
old_style = models.FileField(
storage=OldStyleFSStorage(location=temp_storage_location),
upload_to='tests',
)
...@@ -9,7 +9,6 @@ import tempfile ...@@ -9,7 +9,6 @@ import tempfile
import threading import threading
import time import time
import unittest import unittest
import warnings
from datetime import datetime, timedelta from datetime import datetime, timedelta
from django.core.cache import cache from django.core.cache import cache
...@@ -555,31 +554,6 @@ class FileFieldStorageTests(TestCase): ...@@ -555,31 +554,6 @@ class FileFieldStorageTests(TestCase):
self.assertEqual(obj.extended_length.read(), b'Same Content') self.assertEqual(obj.extended_length.read(), b'Same Content')
obj.extended_length.close() obj.extended_length.close()
def test_old_style_storage(self):
# Testing backward-compatibility with old-style storage backends that
# don't take ``max_length`` parameter in ``get_available_name()``
# and save(). A deprecation warning should be raised.
obj = Storage()
with warnings.catch_warnings(record=True) as warns:
warnings.simplefilter('always')
obj.old_style.save('deprecated_storage_test.txt', ContentFile('Same Content'))
self.assertEqual(len(warns), 2)
self.assertEqual(
str(warns[0].message),
'Backwards compatibility for storage backends without support for '
'the `max_length` argument in Storage.save() will be removed in '
'Django 1.10.'
)
self.assertEqual(
str(warns[1].message),
'Backwards compatibility for storage backends without support for '
'the `max_length` argument in Storage.get_available_name() will '
'be removed in Django 1.10.'
)
self.assertEqual(obj.old_style.name, 'tests/deprecated_storage_test.txt')
self.assertEqual(obj.old_style.read(), b'Same Content')
obj.old_style.close()
def test_filefield_default(self): def test_filefield_default(self):
# Default values allow an object to access a single file. # Default values allow an object to access a single file.
temp_storage.save('tests/default.txt', ContentFile('default content')) temp_storage.save('tests/default.txt', ContentFile('default content'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment