Skip to content

Instantly share code, notes, and snippets.

@kindy
Created September 2, 2015 10:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kindy/4d70d97a702ba31ff0d4 to your computer and use it in GitHub Desktop.
Save kindy/4d70d97a702ba31ff0d4 to your computer and use it in GitHub Desktop.
from threading import local
class Bucket(object):
def __init__(self, bucket, s3=None):
if s3 is None:
s3 = s3_storage
self.bucket = bucket
self.s3 = s3
class Ducket(object):
"""
Based on Django's DB connections
"""
DEFAULT_ALIAS = 'default'
def __init__(self, settings, default_config):
self.settings = settings
self.default_config = default_config
self._buckets = local()
def _ensure_defaults(self, alias):
cfg = self.settings[alias]
for k, v in slef.default_config.items():
cfg.setdefault(k, v)
def __getitem__(self, alias):
if hasattr(self._buckets, alias):
return getattr(self._buckets, alias)
self._ensure_defaults(alias)
cfg = self.settings[alias]
bucket = Bucket(cfg['bucket'])
setattr(self._buckets, alias, bucket)
return bucket
def __getattr__(self, attr):
return getattr(self[self.DEFAULT_ALIAS], attr)
ducket = Ducket(settings.STORAGE_S3, settings.STORAGE_S3_CONFIG)
STORAGE_S3_CONFIG = {
'host': '',
'port': '',
'secure': True,
'access_key_id': '',
'secret_access_key': '',
}
STORAGE_S3 = {
'default': {
'bucket': ''',
},
'abc': {
'bucket': '',
},
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment