From c6fbac188927f55eb89625aed141184c2d7d5dc9 Mon Sep 17 00:00:00 2001 From: yukihira1992 Date: Wed, 11 Sep 2019 00:26:39 +0900 Subject: [PATCH] Added error handling at import django.utils.six module. #758 --- storages/backends/apache_libcloud.py | 9 +++++++-- storages/backends/ftp.py | 6 +++++- storages/backends/s3boto3.py | 7 ++++++- storages/backends/sftpstorage.py | 6 +++++- tests/test_s3boto.py | 6 +++++- tests/test_s3boto3.py | 7 ++++++- 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/storages/backends/apache_libcloud.py b/storages/backends/apache_libcloud.py index ccbab93fa..a9be803c9 100644 --- a/storages/backends/apache_libcloud.py +++ b/storages/backends/apache_libcloud.py @@ -9,8 +9,13 @@ from django.core.files.base import File from django.core.files.storage import Storage from django.utils.deconstruct import deconstructible -from django.utils.six import string_types -from django.utils.six.moves.urllib.parse import urljoin + +try: + from django.utils.six import string_types + from django.utils.six.moves.urllib.parse import urljoin +except ImportError: + string_types = str + from urllib.parse import urljoin try: from libcloud.storage.providers import get_driver diff --git a/storages/backends/ftp.py b/storages/backends/ftp.py index d7d94e333..710a2ed49 100644 --- a/storages/backends/ftp.py +++ b/storages/backends/ftp.py @@ -24,10 +24,14 @@ from django.core.files.base import File from django.core.files.storage import Storage from django.utils.deconstruct import deconstructible -from django.utils.six.moves.urllib import parse as urlparse from storages.utils import setting +try: + from django.utils.six.moves.urllib import parse as urlparse +except ImportError: + from urllib import parse as urlparse + class FTPStorageException(Exception): pass diff --git a/storages/backends/s3boto3.py b/storages/backends/s3boto3.py index 52821550a..66c9d8131 100644 --- a/storages/backends/s3boto3.py +++ b/storages/backends/s3boto3.py @@ -15,7 +15,6 @@ from django.utils.encoding import ( filepath_to_uri, force_bytes, force_text, smart_text, ) -from django.utils.six.moves.urllib import parse as urlparse from django.utils.timezone import is_naive, make_naive from storages.utils import ( @@ -23,6 +22,12 @@ setting, ) +try: + from django.utils.six.moves.urllib import parse as urlparse +except ImportError: + from urllib import parse as urlparse + + try: import boto3.session from boto3 import __version__ as boto3_version diff --git a/storages/backends/sftpstorage.py b/storages/backends/sftpstorage.py index 27c276ee8..9757e69aa 100644 --- a/storages/backends/sftpstorage.py +++ b/storages/backends/sftpstorage.py @@ -16,10 +16,14 @@ from django.core.files.base import File from django.core.files.storage import Storage from django.utils.deconstruct import deconstructible -from django.utils.six.moves.urllib import parse as urlparse from storages.utils import setting +try: + from django.utils.six.moves.urllib import parse as urlparse +except ImportError: + from urllib import parse as urlparse + @deconstructible class SFTPStorage(Storage): diff --git a/tests/test_s3boto.py b/tests/test_s3boto.py index d6183eeda..6fd67f1bc 100644 --- a/tests/test_s3boto.py +++ b/tests/test_s3boto.py @@ -12,10 +12,14 @@ from django.core.files.base import ContentFile from django.test import TestCase from django.utils import timezone as tz -from django.utils.six.moves.urllib import parse as urlparse from storages.backends import s3boto +try: + from django.utils.six.moves.urllib import parse as urlparse +except ImportError: + from urllib import parse as urlparse + class S3BotoTestCase(TestCase): @mock.patch('storages.backends.s3boto.S3Connection') diff --git a/tests/test_s3boto3.py b/tests/test_s3boto3.py index 201b3acc6..f7d37ae70 100644 --- a/tests/test_s3boto3.py +++ b/tests/test_s3boto3.py @@ -13,11 +13,16 @@ from django.core.exceptions import ImproperlyConfigured from django.core.files.base import ContentFile from django.test import TestCase, override_settings -from django.utils.six.moves.urllib import parse as urlparse from django.utils.timezone import is_aware, utc from storages.backends import s3boto3 +try: + from django.utils.six.moves.urllib import parse as urlparse +except ImportError: + from urllib import parse as urlparse + + try: from unittest import mock except ImportError: # Python 3.2 and below