Commit ab6bcd89 authored by Paul J Stevens's avatar Paul J Stevens Committed by Diederik van der Boor
Browse files

support django-storages > 1.10

parent 5541ff6a
...@@ -18,32 +18,43 @@ class PrivateS3BotoStorage(S3Boto3Storage): ...@@ -18,32 +18,43 @@ class PrivateS3BotoStorage(S3Boto3Storage):
access_key_names = ['AWS_PRIVATE_S3_ACCESS_KEY_ID', 'AWS_PRIVATE_ACCESS_KEY_ID'] + S3Boto3Storage.access_key_names access_key_names = ['AWS_PRIVATE_S3_ACCESS_KEY_ID', 'AWS_PRIVATE_ACCESS_KEY_ID'] + S3Boto3Storage.access_key_names
secret_key_names = ['AWS_PRIVATE_S3_SECRET_ACCESS_KEY', 'AWS_PRIVATE_SECRET_ACCESS_KEY'] + S3Boto3Storage.secret_key_names secret_key_names = ['AWS_PRIVATE_S3_SECRET_ACCESS_KEY', 'AWS_PRIVATE_SECRET_ACCESS_KEY'] + S3Boto3Storage.secret_key_names
# Since this class inherits the default storage, it shares many parameters with the base class. def __init__(self, **settings):
# Thus, redefine the setting name that is used to read these values, so almost all settings are not shared. super().__init__(**settings)
access_key = setting('AWS_PRIVATE_S3_ACCESS_KEY_ID', setting('AWS_PRIVATE_ACCESS_KEY_ID', S3Boto3Storage.access_key)) self.file_overwrite = setting('AWS_PRIVATE_S3_FILE_OVERWRITE', False) # false, differ from base class
secret_key = setting('AWS_PRIVATE_S3_SECRET_ACCESS_KEY', setting('AWS_PRIVATE_SECRET_ACCESS_KEY', S3Boto3Storage.secret_key)) self.object_parameters = setting('AWS_PRIVATE_S3_OBJECT_PARAMETERS', {})
file_overwrite = setting('AWS_PRIVATE_S3_FILE_OVERWRITE', False) # false, differ from base class self.bucket_name = setting('AWS_PRIVATE_STORAGE_BUCKET_NAME')
object_parameters = setting('AWS_PRIVATE_S3_OBJECT_PARAMETERS', {}) self.auto_create_bucket = setting('AWS_PRIVATE_AUTO_CREATE_BUCKET', False)
bucket_name = setting('AWS_PRIVATE_STORAGE_BUCKET_NAME') self.default_acl = setting('AWS_PRIVATE_DEFAULT_ACL', 'private') # differ from base class
auto_create_bucket = setting('AWS_PRIVATE_AUTO_CREATE_BUCKET', False) self.bucket_acl = setting('AWS_PRIVATE_BUCKET_ACL', default_acl)
default_acl = setting('AWS_PRIVATE_DEFAULT_ACL', 'private') # differ from base class self.querystring_auth = setting('AWS_PRIVATE_QUERYSTRING_AUTH', True)
bucket_acl = setting('AWS_PRIVATE_BUCKET_ACL', default_acl) self.querystring_expire = setting('AWS_PRIVATE_QUERYSTRING_EXPIRE', 3600)
querystring_auth = setting('AWS_PRIVATE_QUERYSTRING_AUTH', True) self.signature_version = setting('AWS_PRIVATE_S3_SIGNATURE_VERSION')
querystring_expire = setting('AWS_PRIVATE_QUERYSTRING_EXPIRE', 3600) self.reduced_redundancy = setting('AWS_PRIVATE_REDUCED_REDUNDANCY', False)
signature_version = setting('AWS_PRIVATE_S3_SIGNATURE_VERSION') self.location = setting('AWS_PRIVATE_LOCATION', '')
reduced_redundancy = setting('AWS_PRIVATE_REDUCED_REDUNDANCY', False) self.encryption = setting('AWS_PRIVATE_S3_ENCRYPTION', False)
location = setting('AWS_PRIVATE_LOCATION', '') self.custom_domain = setting('AWS_PRIVATE_S3_CUSTOM_DOMAIN')
encryption = setting('AWS_PRIVATE_S3_ENCRYPTION', False) self.addressing_style = setting('AWS_PRIVATE_S3_ADDRESSING_STYLE')
custom_domain = setting('AWS_PRIVATE_S3_CUSTOM_DOMAIN') self.secure_urls = setting('AWS_PRIVATE_S3_SECURE_URLS', True)
addressing_style = setting('AWS_PRIVATE_S3_ADDRESSING_STYLE') self.file_name_charset = setting('AWS_PRIVATE_S3_FILE_NAME_CHARSET', 'utf-8')
secure_urls = setting('AWS_PRIVATE_S3_SECURE_URLS', True) self.preload_metadata = setting('AWS_PRIVATE_PRELOAD_METADATA', False)
file_name_charset = setting('AWS_PRIVATE_S3_FILE_NAME_CHARSET', 'utf-8') self.endpoint_url = setting('AWS_PRIVATE_S3_ENDPOINT_URL', None)
gzip = setting('AWS_PRIVATE_IS_GZIPPED', S3Boto3Storage.gzip) # fallback to default self.use_ssl = setting('AWS_PRIVATE_S3_USE_SSL', True)
preload_metadata = setting('AWS_PRIVATE_PRELOAD_METADATA', False)
url_protocol = setting('AWS_PRIVATE_S3_URL_PROTOCOL', S3Boto3Storage.url_protocol) # fallback to default # default settings used to be class attributes on S3Boto3Storage, but
endpoint_url = setting('AWS_PRIVATE_S3_ENDPOINT_URL', None) # are now part of the initialization or moved to a dictionary
region_name = setting('AWS_PRIVATE_S3_REGION_NAME', S3Boto3Storage.region_name) # fallback to default self.access_key = setting('AWS_PRIVATE_S3_ACCESS_KEY_ID', setting('AWS_PRIVATE_ACCESS_KEY_ID', self.access_key))
use_ssl = setting('AWS_PRIVATE_S3_USE_SSL', True) self.secret_key = setting('AWS_PRIVATE_S3_SECRET_ACCESS_KEY', setting('AWS_PRIVATE_SECRET_ACCESS_KEY', self.secret_key))
if hasattr(self, get_default_settings):
default_settings = self.get_default_settings()
self.gzip = setting('AWS_PRIVATE_IS_GZIPPED', default_settings["gzip"]) # fallback to default
self.url_protocol = setting('AWS_PRIVATE_S3_URL_PROTOCOL', default_settings["url_protocol"]) # fallback to default
self.region_name = setting('AWS_PRIVATE_S3_REGION_NAME', default_settings["region_name"]) # fallback to default
else: # backward compatibility
self.gzip = setting('AWS_PRIVATE_IS_GZIPPED', self.gzip)
self.url_protocol = setting('AWS_PRIVATE_S3_URL_PROTOCOL', self.url_protocol)
self.region_name = setting('AWS_PRIVATE_S3_REGION_NAME', self.region_name)
def url(self, name, *args, **kwargs): def url(self, name, *args, **kwargs):
if appconfig.PRIVATE_STORAGE_S3_REVERSE_PROXY or not self.querystring_auth: if appconfig.PRIVATE_STORAGE_S3_REVERSE_PROXY or not self.querystring_auth:
...@@ -62,4 +73,7 @@ class PrivateEncryptedS3BotoStorage(PrivateS3BotoStorage): ...@@ -62,4 +73,7 @@ class PrivateEncryptedS3BotoStorage(PrivateS3BotoStorage):
through :class:`PrivateS3BotoStorage` by using the proper settings. through :class:`PrivateS3BotoStorage` by using the proper settings.
""" """
encryption = True encryption = True
signature_version = PrivateS3BotoStorage.signature_version or 's3v4'
def __init__(self, **settings):
super().__init__(**settings)
self.signature_version = self.signature_version or 's3v4'
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