def test_default(self): """Test passing a default value""" caches = redisify(default='redis://localhost') self.assertEqual(caches['default']['LOCATION'], 'localhost:6379') self.assertEqual(caches['default']['OPTIONS']['DB'], 0)
def test_redis_url(self): """Test `REDIS_URL` setting""" os.environ['REDIS_URL'] = 'redis://localhost/1' caches = redisify(default='redis://localhost') self.assertEqual(caches['default']['LOCATION'], 'localhost:6379') self.assertEqual(caches['default']['OPTIONS']['DB'], 1)
def test_settings(self): """Test settings.CACHES""" caches = redisify(default='redis://*****:*****@hostname:1234/5') self.assertEqual(caches['default']['BACKEND'], 'redis_cache.RedisCache') self.assertEqual(caches['default']['LOCATION'], 'hostname:1234') self.assertEqual(caches['default']['OPTIONS']['DB'], 5) self.assertEqual(caches['default']['OPTIONS']['PARSER_CLASS'], 'redis.connection.HiredisParser') self.assertEqual(caches['default']['OPTIONS']['PASSWORD'], 'password')
def test_all(self): """Test all settings""" os.environ['REDIS_URL'] = 'redis://localhost/1' os.environ['OTHER_REDIS_URL'] = 'redis://localhost/2' caches = redisify(default='redis://localhost') self.assertEqual(caches['default']['LOCATION'], 'localhost:6379') self.assertEqual(caches['OTHER_REDIS']['LOCATION'], 'localhost:6379') self.assertEqual(caches['default']['OPTIONS']['DB'], 1) self.assertEqual(caches['OTHER_REDIS']['OPTIONS']['DB'], 2)
def test_others(self): """Test other environment settings""" os.environ['OTHER_REDIS_URL'] = 'redis://localhost/1' os.environ['ANOTHER_REDIS_URI'] = 'redis://localhost/2' caches = redisify() self.assertTrue('default' in caches) self.assertTrue(caches['default'] == caches['OTHER_REDIS'] or caches['default'] == caches['ANOTHER_REDIS']) self.assertEqual(caches['OTHER_REDIS']['LOCATION'], 'localhost:6379') self.assertEqual(caches['ANOTHER_REDIS']['LOCATION'], 'localhost:6379') self.assertEqual(caches['OTHER_REDIS']['OPTIONS']['DB'], 1) self.assertEqual(caches['ANOTHER_REDIS']['OPTIONS']['DB'], 2)
def test_redistogo(self): """Test using REDISTOGO_URL""" if "REDISTOGO_URL" in os.environ: tmp = os.environ["REDISTOGO_URL"] else: tmp = None os.environ["REDISTOGO_URL"] = self.redistogo caches = redisify() # Make sure to clean up the setting if tmp is None: del os.environ["REDISTOGO_URL"] else: os.environ["REDISTOGO_URL"] = tmp self.assertEqual(caches["LOCATION"], "example.redistogo.com:6379") self.assertEqual(caches["OPTIONS"]["PASSWORD"], "password")
def test_none(self): """Test no values at all""" caches = redisify() self.assertEqual(caches, {})
class Production(Common): ########## INSTALLED_APPS INSTALLED_APPS = Common.INSTALLED_APPS ########## END INSTALLED_APPS ########## SECRET KEY SECRET_KEY = values.SecretValue() ########## END SECRET KEY ########## django-secure INSTALLED_APPS += ("djangosecure", ) # set this to 60 seconds and then to 518400 when you can prove it works SECURE_HSTS_SECONDS = 60 SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(True) SECURE_FRAME_DENY = values.BooleanValue(True) SECURE_CONTENT_TYPE_NOSNIFF = values.BooleanValue(True) SECURE_BROWSER_XSS_FILTER = values.BooleanValue(True) SESSION_COOKIE_SECURE = values.BooleanValue(False) SESSION_COOKIE_HTTPONLY = values.BooleanValue(True) SECURE_SSL_REDIRECT = values.BooleanValue(True) ########## end django-secure ########## SITE CONFIGURATION # Hosts/domain names that are valid for this site # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts ALLOWED_HOSTS = ["*"] ########## END SITE CONFIGURATION INSTALLED_APPS += ("gunicorn", ) ########## STORAGE CONFIGURATION # See: http://django-storages.readthedocs.org/en/latest/index.html INSTALLED_APPS += ( 'storages', ) # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings AWS_ACCESS_KEY_ID = values.SecretValue() AWS_SECRET_ACCESS_KEY = values.SecretValue() AWS_STORAGE_BUCKET_NAME = values.SecretValue() AWS_AUTO_CREATE_BUCKET = True AWS_QUERYSTRING_AUTH = False # see: https://github.com/antonagestam/collectfast AWS_PRELOAD_METADATA = True INSTALLED_APPS += ("collectfast", ) # AWS cache settings, don't change unless you know what you're doing: AWS_EXPIREY = 60 * 60 * 24 * 7 AWS_HEADERS = { 'Cache-Control': 'max-age=%d, s-maxage=%d, must-revalidate' % (AWS_EXPIREY, AWS_EXPIREY) } # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url STATIC_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME ########## END STORAGE CONFIGURATION ########## EMAIL DEFAULT_FROM_EMAIL = values.Value( 'memuri <*****@*****.**>') EMAIL_HOST = values.Value('smtp.sendgrid.com') EMAIL_HOST_PASSWORD = values.SecretValue(environ_prefix="", environ_name="SENDGRID_PASSWORD") EMAIL_HOST_USER = values.SecretValue(environ_prefix="", environ_name="SENDGRID_USERNAME") EMAIL_PORT = values.IntegerValue(587, environ_prefix="", environ_name="EMAIL_PORT") EMAIL_SUBJECT_PREFIX = values.Value('[memuri] ', environ_name="EMAIL_SUBJECT_PREFIX") EMAIL_USE_TLS = True SERVER_EMAIL = EMAIL_HOST_USER ########## END EMAIL ########## TEMPLATE CONFIGURATION # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs TEMPLATE_LOADERS = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )), ) ########## END TEMPLATE CONFIGURATION ########## CACHING # Redis Cache. TODO: make this Django configuration stylee or move it somewhere more appropriate? #CACHE_URL = values.SecretValue(environ_prefix="", environ_name="REDISCLOUD_URL") #CACHES = values.CacheURLValue() CACHES = redisify(default='redis://localhost')
DEBUG = True if os.environ.get('DJANGO_DEBUG', None) == '1' else False TEMPLATE_DEBUG = DEBUG ADMINS = ( # ('Your Name', '*****@*****.**'), ) MANAGERS = ADMINS ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '.herokuapp.com').split(':') import dj_database_url DATABASES = {'default': dj_database_url.config()} from redisify import redisify CACHES = redisify(default='redis://localhost/0') # Configure sessions using Redis. This depends on the caching settings above. SESSION_ENGINE = 'redis_sessions.session' SESSION_REDIS_HOST, SESSION_REDIS_PORT = \ CACHES['default']['LOCATION'].split(':') SESSION_REDIS_PORT = int(SESSION_REDIS_PORT) SESSION_REDIS_DB = CACHES['default']['OPTIONS']['DB'] SESSION_REDIS_PASSWORD = CACHES['default']['OPTIONS']['PASSWORD'] SESSION_REDIS_PREFIX = 'sess' # Use Redis as the broker for Celery tasks BROKER_URL = (lambda password, db: 'redis://:%%s@%(LOCATION)s/%%d' \ % CACHES['default'] % (password, db))( \ CACHES['default']['OPTIONS']['PASSWORD'] or '', CACHES['default']['OPTIONS']['DB'] or 0,
def test_parser_class(self): """Test the PARSER_CLASS setting""" caches = redisify(default=self.localhost) self.assertEqual(caches["OPTIONS"]["PARSER_CLASS"], "redis.connection.HiredisParser")
def test_no_default(self): """Test passing no default value""" caches = redisify() self.assertTrue(caches is None)
def test_default(self): """Test passing a default value""" caches = redisify(default=self.localhost) self.assertEqual(caches["LOCATION"], "localhost") self.assertTrue(caches["OPTIONS"]["PASSWORD"] is None)
def test_backend(self): """Test the BACKEND setting""" caches = redisify(default=self.localhost) self.assertEqual(caches["BACKEND"], "redis_cache.RedisCache")
RAVEN_CONFIG = { 'dsn': os.getenv('RAVEN_DSN'), } COMPRESS_PRECOMPILERS = ( ('text/coffeescript', 'coffee --compile --stdio'), ('text/x-scss', 'django_libsass.SassCompiler'), ) REDIS_ADDR = os.environ.get('REDIS_1_PORT_6379_TCP_ADDR', 'localhost') REDIS_PORT = os.environ.get('REDIS_1_PORT_6379_TCP_PORT', '6379') REDIS_URL = os.environ.get('REDISCLOUD_URL') or 'redis://{}:{}/0'.format(REDIS_ADDR, REDIS_PORT) from redisify import redisify if REDIS_URL: CACHES = redisify(default=REDIS_URL) else: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } } BROKER_URL = REDIS_URL BROKER_TRANSPORT_OPTIONS = { 'fanout_prefix': True, 'fanout_patterns': True, } CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend' from celery.schedules import crontab
'dsn': os.getenv('RAVEN_DSN'), } COMPRESS_PRECOMPILERS = ( ('text/coffeescript', 'coffee --compile --stdio'), ('text/x-scss', 'django_libsass.SassCompiler'), ) REDIS_ADDR = os.environ.get('REDIS_1_PORT_6379_TCP_ADDR', 'localhost') REDIS_PORT = os.environ.get('REDIS_1_PORT_6379_TCP_PORT', '6379') REDIS_URL = os.environ.get('REDISCLOUD_URL') or 'redis://{}:{}/0'.format( REDIS_ADDR, REDIS_PORT) from redisify import redisify if REDIS_URL: CACHES = redisify(default=REDIS_URL) else: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } } BROKER_URL = REDIS_URL BROKER_TRANSPORT_OPTIONS = { 'fanout_prefix': True, 'fanout_patterns': True, } CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend' from celery.schedules import crontab
DEBUG = True if os.environ.get('DJANGO_DEBUG', None) == '1' else False TEMPLATE_DEBUG = DEBUG ADMINS = ( # ('Your Name', '*****@*****.**'), ) MANAGERS = ADMINS ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '.herokuapp.com').split(':') import dj_database_url DATABASES = {'default': dj_database_url.config()} from redisify import redisify CACHES = redisify(default='redis://localhost/0') # Configure sessions using Redis. This depends on the caching settings above. SESSION_ENGINE = 'redis_sessions.session' SESSION_REDIS_HOST, SESSION_REDIS_PORT = \ CACHES['default']['LOCATION'].split(':') SESSION_REDIS_PORT = int(SESSION_REDIS_PORT) SESSION_REDIS_DB = CACHES['default']['OPTIONS']['DB'] SESSION_REDIS_PASSWORD = CACHES['default']['OPTIONS']['PASSWORD'] SESSION_REDIS_PREFIX = 'sess' SESSION_COOKIE_SECURE = True # Use Redis as the broker for Celery tasks BROKER_URL = (lambda password, db: 'redis://:%%s@%(LOCATION)s/%%d' \ % CACHES['default'] % (password, db))( \ CACHES['default']['OPTIONS']['PASSWORD'] or '',
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': '../../../test.db', # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD': '', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } } DATABASES['default'] = dj_database_url.config() from redisify import redisify CACHES = {'default': redisify(default='redis://localhost')} # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # In a Windows environment this must be set to your system time zone. TIME_ZONE = 'America/Chicago' # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'en-us' SITE_ID = 1 # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery.