Completed
Push — master ( 646ecf...07a97f )
by
unknown
48s
created

get_public_read_storage_class()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 2
rs 10
1
from storages.backends.s3boto import S3BotoStorage
2
from furl import furl
3
4
from django.utils.module_loading import import_string
5
from django.conf import settings
6
7
8
class BaseS3Storage(S3BotoStorage):
9
    def url(self, name):
10
        url = super(BaseS3Storage, self).url(name)
11
        if not self.querystring_auth:
12
            f = furl(url)
13
            if 'x-amz-security-token' in f.args:
14
                del f.args['x-amz-security-token']
15
                url = f.url
16
        return url
17
18
19
class StaticS3Storage(BaseS3Storage):
20
    location = 'static'
21
    default_acl = 'public-read'
22
23
    def url(self, name):
24
        url = super(StaticS3Storage, self).url(name)
25
        if name.endswith('/') and not url.endswith('/'):
26
            url += '/'
27
        return url
28
29
30
class PublicReadS3Storage(BaseS3Storage):
31
    querystring_auth = False
32
    default_acl = 'public-read'
33
34
35
class S3Storage(BaseS3Storage):
36
    pass
37
38
39
def get_public_read_storage_class():
40
    return import_string(getattr(settings, 'PUBLIC_READ_FILE_STORAGE', settings.DEFAULT_FILE_STORAGE))
41
42
43
public_read_storage = get_public_read_storage_class()()
44