From 63c3c3850d607725366dea90d644be82f339ac6d Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Mon, 12 Aug 2019 21:29:01 +0200 Subject: [PATCH] fix #129: set preload_metadata for both boto3 and boto --- collectfast/boto.py | 15 ++++++++++----- collectfast/management/commands/collectstatic.py | 4 ++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/collectfast/boto.py b/collectfast/boto.py index 47cd27c..d1f6552 100644 --- a/collectfast/boto.py +++ b/collectfast/boto.py @@ -1,5 +1,7 @@ from typing import Any +from django.core.exceptions import ImproperlyConfigured + from . import settings has_boto = True # type: bool @@ -7,12 +9,12 @@ try: from storages.backends.s3boto import S3BotoStorage -except ImportError: +except (ImportError, ImproperlyConfigured): has_boto = False try: from storages.backends.s3boto3 import S3Boto3Storage -except ImportError: +except (ImportError, ImproperlyConfigured): has_boto3 = False @@ -23,9 +25,12 @@ def is_boto3(storage): def is_boto(storage): # type: (Any) -> bool - return has_boto and ( - isinstance(storage, S3BotoStorage) or isinstance(storage, S3Boto3Storage) - ) + return has_boto and isinstance(storage, S3BotoStorage) + + +def is_any_boto(storage): + # type: (Any) -> bool + return is_boto(storage) or is_boto3(storage) def reset_connection(storage): diff --git a/collectfast/management/commands/collectstatic.py b/collectfast/management/commands/collectstatic.py index 2dd3883..abb4ad1 100644 --- a/collectfast/management/commands/collectstatic.py +++ b/collectfast/management/commands/collectstatic.py @@ -9,7 +9,7 @@ from django.utils.encoding import smart_str from collectfast import settings -from collectfast.boto import is_boto +from collectfast.boto import is_any_boto from collectfast.boto import reset_connection from collectfast.etag import should_copy_file @@ -41,7 +41,7 @@ def __init__(self, *args, **kwargs): self.tasks = [] # type: List[Task] self.collectfast_enabled = settings.enabled - if is_boto(self.storage) and self.storage.preload_metadata is not True: + if is_any_boto(self.storage) and self.storage.preload_metadata is not True: self.storage.preload_metadata = True warnings.warn( "Collectfast does not work properly without `preload_metadata` "