コード例 #1
0
    def test_url_args(self):
        url = "locmem://?timeout=5"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "")
        self.assertEqual(config["TIMEOUT"], "5")
コード例 #2
0
    def test_url_with_name_args(self):
        url = "locmem://unique-snowflakes?timeout=5"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unique-snowflakes")
        self.assertEqual(config["TIMEOUT"], "5")
コード例 #3
0
def test_memcached_url_returns_pylibmc_cache():
    url = 'memcached://127.0.0.1:11211?key_prefix=site1'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django.core.cache.backends.memcached.PyLibMCCache'
    assert config['LOCATION'] == '127.0.0.1:11211'
    assert config['KEY_PREFIX'] == 'site1'
コード例 #4
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_query_string_params_are_converted_to_cache_options():
    url = 'db://my_cache_table?max_entries=1000&cull_frequency=2'
    config = django_cache_url.parse(url)

    assert 'OPTIONS' in config
    assert config['OPTIONS']['MAX_ENTRIES'] == 1000
    assert config['OPTIONS']['CULL_FREQUENCY'] == 2
コード例 #5
0
    def test_url_multiple_hosts(self):
        url = "memcached://127.0.0.1:11211,192.168.0.100:11211?key_prefix=site1"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "127.0.0.1:11211;192.168.0.100:11211")
        self.assertEqual(config.get("KEY_PREFIX"), "site1")
コード例 #6
0
    def test_url(self):
        url = "memcached://127.0.0.1:11211"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "127.0.0.1:11211")
        self.assertEqual(config.get("KEY_PREFIX"), None)
コード例 #7
0
def test_redis_with_password():
    url = 'redis://:[email protected]:6379/0'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_redis.cache.RedisCache'
    assert config['LOCATION'] == 'redis://127.0.0.1:6379/0'
    assert config['OPTIONS']['PASSWORD'] == 'redispass'
コード例 #8
0
def test_hiredis():
    url = 'hiredis://127.0.0.1:6379/0?key_prefix=site1'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_redis.cache.RedisCache'
    assert config['LOCATION'] == 'redis://127.0.0.1:6379/0'
    assert config['OPTIONS']['PARSER_CLASS'] == 'redis.connection.HiredisParser'
コード例 #9
0
def test_hiredis_socket():
    url = 'hiredis:///path/to/socket/1?key_prefix=site1'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_redis.cache.RedisCache'
    assert config['LOCATION'] == 'unix:/path/to/socket:1'
    assert config['OPTIONS']['PARSER_CLASS'] == 'redis.connection.HiredisParser'
コード例 #10
0
def test_redis_socket():
    url = 'redis:///path/to/socket/1?key_prefix=site1'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_redis.cache.RedisCache'
    assert config['LOCATION'] == 'unix:/path/to/socket:1'
    assert 'OPTIONS' not in config
コード例 #11
0
    def test_socket(self):
        url = "memcached:///path/to/socket"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unix:/path/to/socket")
        self.assertEqual(config.get("KEY_PREFIX"), None)
コード例 #12
0
    def test_socket_args(self):
        url = "memcached:///path/to/socket?key_prefix=site1"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unix:/path/to/socket")
        self.assertEqual(config["KEY_PREFIX"], "site1")
コード例 #13
0
    def test_url_password(self):
        url = "redis://*****:*****@localhost:6379/"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "localhost:6379:0")
        self.assertEqual(config["OPTIONS"]["PASSWORD"], "pass")
コード例 #14
0
    def test_url_args(self):
        url = "file:///path/to/file?timeout=5"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "/path/to/file")
        self.assertEqual(config["TIMEOUT"], "5")
コード例 #15
0
    def test_url_args(self):
        url = "dummy://?key_prefix=site1"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "")
        self.assertEqual(config["KEY_PREFIX"], "site1")
コード例 #16
0
def test_bmemcached_with_user_and_password():
    url = 'bmemcached://*****:*****@127.0.0.1:6379'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_bmemcached.memcached.BMemcached'
    assert config['LOCATION'] == '127.0.0.1:6379'
    assert config['OPTIONS']['username'] == 'user'
    assert config['OPTIONS']['password'] == 'pass'
コード例 #17
0
    def test_url_args(self):
        url = "redis://*****:*****@localhost:6379:1/?key_prefix=site1"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "localhost:6379:1")
        self.assertEqual(config["OPTIONS"]["PASSWORD"], "pass")
        self.assertEqual(config["KEY_PREFIX"], "site1")
コード例 #18
0
    def test_url(self):
        url = "hiredis://localhost:6379/"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "localhost:6379:0")
        self.assertEqual(config.get("KEY_PREFIX"), None)
        self.assertEqual(config["OPTIONS"]["PARSER_CLASS"], "redis.connection.HiredisParser")
コード例 #19
0
    def test_socket_args(self):
        url = "redis:///path/to/socket:1?key_prefix=site1"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unix:/path/to/socket:1")
        self.assertEqual(config.get("OPTIONS"), None)
        self.assertEqual(config["KEY_PREFIX"], "site1")
コード例 #20
0
    def test_url(self):
        url = "redis://localhost:6379"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "localhost:6379:0")
        self.assertEqual(config.get("OPTIONS"), None)
        self.assertEqual(config.get("KEY_PREFIX"), None)
コード例 #21
0
def test_bmemcached_with_user_only():
    url = 'bmemcached://[email protected]:6379'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_bmemcached.memcached.BMemcached'
    assert config['LOCATION'] == '127.0.0.1:6379'
    assert config['OPTIONS']['username'] == 'user'
    assert 'password' not in config['OPTIONS'].keys()
コード例 #22
0
    def test_socket(self):
        url = "hiredis:///path/to/socket"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unix:/path/to/socket:0")
        self.assertEqual(config.get("KEY_PREFIX"), None)
        self.assertEqual(config["OPTIONS"]["PARSER_CLASS"], "redis.connection.HiredisParser")
コード例 #23
0
def test_uwsgicache_url_returns_uwsgicache_cache():
    url = 'uwsgicache://cachename/'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'uwsgicache.UWSGICache'
    assert config['LOCATION'] == 'cachename'
コード例 #24
0
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

SITE_ID = 1

# Caching
try:
    import django_cache_url
    CACHES = {'default': django_cache_url.parse(get_env('DJANGO_CACHE_URL'))}
    CACHES['default']['TIMEOUT'] = None
except (ImportError, TypeError):
    pass

# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/

LANGUAGE_CODE = 'de'

TIME_ZONE = 'Europe/Berlin'

USE_I18N = True

USE_L10N = True
コード例 #25
0
AXES_COOLOFF_TIME = 1  # 1 hour cooloff time
AXES_FAILURE_LIMIT = 100

# Disable Caching in development
if DEBUG:

    CACHES = {
        "default": {
            "BACKEND": "django.core.cache.backends.dummy.DummyCache",
        }
    }
else:

    CACHES = {
        "default": django_cache_url.parse(os.getenv("MEMCACHED_URL"))
    }  # set by dokku automatically when linking apps

# # Sentry Monitoring Configuration ========================================================
# only in production
if not DEBUG:
    sentry_sdk.init(
        dsn=os.getenv("SENTRY_KEY"),
        integrations=[DjangoIntegration()],
        traces_sample_rate=0.3,
        # If you wish to associate users to errors (assuming you are using
        # django.contrib.auth) you may enable sending PII data.
        send_default_pii=True,
    )

ALLOWED_HOSTS = []
コード例 #26
0
ファイル: settings.py プロジェクト: rerb/stars
    'django_password_protect.PasswordProtectMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
    'django.contrib.admindocs.middleware.XViewMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware'
]

CACHES = {
    'default':
    django_cache_url.parse(os.environ.get('CACHE_URL', 'dummy://')),
    'filecache':
    django_cache_url.parse(
        os.environ.get('FILE_CACHE_URL', 'file:///tmp/filecache'))
}

AUTHENTICATION_BACKENDS = (
    'django_membersuite_auth.backends.MemberSuiteBackend', )
if 'test' in sys.argv:
    AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        'django_membersuite_auth.backends.MemberSuiteBackend')

AUTH_USER_MODEL = 'auth.User'

LOGIN_URL = '/accounts/login/'
コード例 #27
0
def test_memcached_socket_url():
    url = 'memcached:///path/to/socket/'
    config = django_cache_url.parse(url)
    assert config['LOCATION'] == 'unix:/path/to/socket/'
コード例 #28
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_dummy_url_returns_dummy_cache():
    config = django_cache_url.parse('dummy://')
    assert config['BACKEND'] == 'django.core.cache.backends.dummy.DummyCache'
コード例 #29
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_query_string_params_are_converted_to_cache_arguments():
    url = 'redis:///path/to/socket?key_prefix=foo&bar=herp'
    config = django_cache_url.parse(url)

    assert config['KEY_PREFIX'] == 'foo'
    assert config['BAR'] == 'herp'
コード例 #30
0
ファイル: settings.py プロジェクト: azurah/comiccollector
WSGI_APPLICATION = 'comiccollector.wsgi.application'

DATABASES = {
    'default':
    dj_database_url.config(
        default=os.environ.get(
            'DB_URL',
            'postgres://*****:*****@localhost:5432/comiccollector'
        ),
        conn_max_age=None,
    )
}

CACHES = {
    'default':
    django_cache_url.parse(
        os.environ.get('CACHE_URL', 'hiredis://localhost:6379'))
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME':
        'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME':
        'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME':
        'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
コード例 #31
0
ファイル: test_ratelimit.py プロジェクト: rerb/hub
from django.conf import settings
from django.core.urlresolvers import reverse
from django.test import TestCase, override_settings

import django_cache_url
from mock import patch
from time import sleep
import sys


# @override_settings(BROWSE_RATE_LIMIT='10/5m') #  couldn't get this to work
@override_settings(
    CACHES={'default': django_cache_url.parse('locmem://hub_test')},
    RATELIMIT_ENABLE=True)
class RateLimitTestCase(TestCase):
    """
    Test rate limiting for specific urls
    """

    def setUp(self):
        pass

    def test_login(self):
        """
            5th request in succession should raise Ratelimited
        """
        url = reverse('login')
        error_count = 0
        for i in range(6):
            response = self.client.post(url, {'username': '******'})
            if i <= 4:
コード例 #32
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_locmem_url_returns_locmem_cache():
    config = django_cache_url.parse('locmem://')
    assert config['BACKEND'] == 'django.core.cache.backends.locmem.LocMemCache'
コード例 #33
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_dummy_url_returns_dummy_cache():
    config = django_cache_url.parse('dummy://')
    assert config['BACKEND'] == 'django.core.cache.backends.dummy.DummyCache'
コード例 #34
0
ファイル: test_environs.py プロジェクト: udemezue01/environs
 def test_dj_cache_url(self, env, set_env):
     cache_url = "redis://redis:6379/0"
     set_env({"CACHE_URL": cache_url})
     res = env.dj_cache_url("CACHE_URL")
     assert res == django_cache_url.parse(cache_url)
コード例 #35
0
def test_uwsgicache_default_location():
    url = 'uwsgicache://'
    config = django_cache_url.parse(url)
    assert config['LOCATION'] == 'default'
コード例 #36
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_file_url_returns_file_cache_backend_absolute():
    config = django_cache_url.parse('file:////var/herp')

    assert config['BACKEND'] == 'django.core.cache.backends.filebased.FileBasedCache'
    assert config['LOCATION'] == '/var/herp'
コード例 #37
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_locmem_url_returns_locmem_cache():
    config = django_cache_url.parse('locmem://')
    assert config['BACKEND'] == 'django.core.cache.backends.locmem.LocMemCache'
コード例 #38
0
    def to_settings(self, data, settings):
        import django_cache_url
        import dj_database_url
        import warnings
        from functools import partial
        from aldryn_addons.utils import boolean_ish, djsenv

        env = partial(djsenv, settings=settings)

        # BASE_DIR should already be set by aldryn-addons
        settings["BASE_DIR"] = env("BASE_DIR", required=True)
        settings["DATA_ROOT"] = env(
            "DATA_ROOT", os.path.join(settings["BASE_DIR"], "data")
        )
        settings["SECRET_KEY"] = env("SECRET_KEY", "this-is-not-very-random")
        settings["DEBUG"] = boolean_ish(env("DEBUG", False))
        settings["ENABLE_SYNCING"] = boolean_ish(
            env("ENABLE_SYNCING", settings["DEBUG"])
        )
        settings["DISABLE_TEMPLATE_CACHE"] = boolean_ish(
            env("DISABLE_TEMPLATE_CACHE", settings["DEBUG"])
        )

        settings["DATABASE_URL"] = env("DATABASE_URL")
        settings["CACHE_URL"] = env("CACHE_URL")
        if env("DJANGO_MODE") == "build":
            # In build mode we don't have any connected services like db or
            # cache available. So we need to configure those things in a way
            # they can run without real backends.
            settings["DATABASE_URL"] = "sqlite://:memory:"
            settings["CACHE_URL"] = "locmem://"

        if not settings["DATABASE_URL"]:
            settings["DATABASE_URL"] = "sqlite:///{}".format(
                os.path.join(settings["DATA_ROOT"], "db.sqlite3")
            )
            warnings.warn(
                "no database configured. Falling back to DATABASE_URL={0}".format(
                    settings["DATABASE_URL"]
                ),
                RuntimeWarning,
            )
        settings["DATABASES"]["default"] = dj_database_url.parse(
            settings["DATABASE_URL"]
        )

        if not settings["CACHE_URL"]:
            settings["CACHE_URL"] = "locmem://"
            warnings.warn(
                "no cache configured. Falling back to CACHE_URL={0}".format(
                    settings["CACHE_URL"]
                ),
                RuntimeWarning,
            )
        settings["CACHES"]["default"] = django_cache_url.parse(
            settings["CACHE_URL"]
        )

        settings["ROOT_URLCONF"] = env("ROOT_URLCONF", "urls")
        settings["ADDON_URLS_I18N"].append("aldryn_django.i18n_urls")

        settings["WSGI_APPLICATION"] = "wsgi.application"

        settings["INSTALLED_APPS"].extend(
            [
                "django.contrib.auth",
                "django.contrib.contenttypes",
                "django.contrib.sessions",
                "django.contrib.sites",
                "django.contrib.messages",
                "django.contrib.admin",
                "django.contrib.staticfiles",
                "aldryn_django",
            ]
        )

        if settings["ENABLE_SYNCING"] or settings["DISABLE_TEMPLATE_CACHE"]:
            loader_list_class = list
        else:
            loader_list_class = CachedLoader

        settings["TEMPLATES"] = [
            {
                "BACKEND": "django.template.backends.django.DjangoTemplates",
                "DIRS": env(
                    "TEMPLATE_DIRS",
                    [os.path.join(settings["BASE_DIR"], "templates")],
                ),
                "OPTIONS": {
                    "debug": boolean_ish(
                        env("TEMPLATE_DEBUG", settings["DEBUG"])
                    ),
                    "context_processors": [
                        "django.contrib.auth.context_processors.auth",
                        "django.contrib.messages.context_processors.messages",
                        "django.template.context_processors.i18n",
                        "django.template.context_processors.debug",
                        "django.template.context_processors.request",
                        "django.template.context_processors.media",
                        "django.template.context_processors.csrf",
                        "django.template.context_processors.tz",
                        "django.template.context_processors.static",
                        "aldryn_django.context_processors.debug",
                    ],
                    "loaders": loader_list_class(
                        [
                            "django.template.loaders.filesystem.Loader",
                            "django.template.loaders.app_directories.Loader",
                            "django.template.loaders.eggs.Loader",
                        ]
                    ),
                },
            }
        ]

        settings["MIDDLEWARE_CLASSES"] = [
            "django.contrib.sessions.middleware.SessionMiddleware",
            # 'django.middleware.common.CommonMiddleware',
            "django.middleware.csrf.CsrfViewMiddleware",
            "django.contrib.auth.middleware.AuthenticationMiddleware",
            # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
            "django.contrib.messages.middleware.MessageMiddleware",
            "django.middleware.locale.LocaleMiddleware",
            "django.contrib.sites.middleware.CurrentSiteMiddleware",
            "django.middleware.common.CommonMiddleware",
            "django.middleware.clickjacking.XFrameOptionsMiddleware",
            # 'django.middleware.security.SecurityMiddleware',
        ]

        if not env("DISABLE_GZIP"):
            settings["MIDDLEWARE_CLASSES"].insert(
                0, "django.middleware.gzip.GZipMiddleware"
            )

        settings["SITE_ID"] = env("SITE_ID", 1)

        settings["ADDON_URLS_I18N_LAST"] = "aldryn_django.urls_redirect"

        self.domain_settings(data, settings, env=env)
        self.security_settings(data, settings, env=env)
        self.server_settings(settings, env=env)
        self.logging_settings(settings, env=env)
        # Order matters, sentry settings rely on logging being configured.
        self.sentry_settings(settings, env=env)
        self.storage_settings_for_media(settings, env=env)
        self.storage_settings_for_static(data, settings, env=env)
        self.email_settings(data, settings, env=env)
        self.i18n_settings(data, settings, env=env)
        self.migration_settings(settings, env=env)
        settings["ALDRYN_DJANGO_ENABLE_GIS"] = data["enable_gis"]
        if settings["ALDRYN_DJANGO_ENABLE_GIS"]:
            self.gis_settings(settings, env=env)
        return settings
コード例 #39
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_file_url_returns_file_cache_backend_relative():
    config = django_cache_url.parse('file:///herp/bar')

    assert config['BACKEND'] == 'django.core.cache.backends.filebased.FileBasedCache'
    assert config['LOCATION'] == 'herp/bar'
コード例 #40
0
ファイル: test_redis.py プロジェクト: p14z/django-cache-url
def test_redis():
    url = 'redis://127.0.0.1:6379/0?key_prefix=site1'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django_redis.cache.RedisCache'
    assert config['LOCATION'] == 'redis://127.0.0.1:6379/0'
コード例 #41
0
def test_memcached_url_multiple_locations():
    url = 'memcached://127.0.0.1:11211,192.168.0.100:11211?key_prefix=site1'
    config = django_cache_url.parse(url)
    assert config['LOCATION'] == '127.0.0.1:11211;192.168.0.100:11211'
コード例 #42
0
    def test_url_with_name(self):
        url = "locmem://unique-snowflakes"
        config = django_cache_url.parse(url)

        self.assertEqual(config["BACKEND"], self.backend)
        self.assertEqual(config["LOCATION"], "unique-snowflakes")
コード例 #43
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_db_url_returns_database_cache_backend():
    url = 'db://super_caching_table'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django.core.cache.backends.db.DatabaseCache'
    assert config['LOCATION'] == 'super_caching_table'
コード例 #44
0
ファイル: test_core.py プロジェクト: frnhr/django-cache-url
def test_unknown_cache_backend():
    with pytest.raises(Exception):
        django_cache_url.parse('donkey://127.0.0.1/foo')
コード例 #45
0
ファイル: settings.py プロジェクト: TheProfitwareGroup/saleor
PROJECT_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))

ROOT_URLCONF = 'saleor.urls'

WSGI_APPLICATION = 'saleor.wsgi.application'

ADMINS = (
    # ('Your Name', '*****@*****.**'),
)
MANAGERS = ADMINS
INTERNAL_IPS = os.environ.get('INTERNAL_IPS', '127.0.0.1').split()

CACHE_URL = os.environ.get('CACHE_URL',
                           os.environ.get('REDIS_URL', 'locmem://'))
CACHES = {'default': django_cache_url.parse(CACHE_URL)}

SQLITE_DB_URL = 'sqlite:///' + os.path.join(PROJECT_ROOT, 'dev.sqlite')
DATABASES = {'default': dj_database_url.config(default=SQLITE_DB_URL)}


TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True


EMAIL_URL = os.environ.get('EMAIL_URL', 'console://')
email_config = dj_email_url.parse(EMAIL_URL)
コード例 #46
0
    def to_settings(self, data, settings):
        import django_cache_url
        import dj_database_url
        import warnings
        from functools import partial
        from aldryn_addons.utils import boolean_ish, djsenv
        env = partial(djsenv, settings=settings)

        # BASE_DIR should already be set by aldryn-addons
        settings['BASE_DIR'] = env('BASE_DIR', required=True)
        settings['DATA_ROOT'] = env('DATA_ROOT',
                                    os.path.join(settings['BASE_DIR'], 'data'))
        settings['SECRET_KEY'] = env('SECRET_KEY', 'this-is-not-very-random')
        settings['DEBUG'] = boolean_ish(env('DEBUG', False))
        settings['ENABLE_SYNCING'] = boolean_ish(
            env('ENABLE_SYNCING', settings['DEBUG']))
        settings['DISABLE_TEMPLATE_CACHE'] = boolean_ish(
            env('DISABLE_TEMPLATE_CACHE', settings['DEBUG']))

        settings['DATABASE_URL'] = env('DATABASE_URL')
        settings['CACHE_URL'] = env('CACHE_URL')
        if env('DJANGO_MODE') == 'build':
            # In build mode we don't have any connected services like db or
            # cache available. So we need to configure those things in a way
            # they can run without real backends.
            settings['DATABASE_URL'] = 'sqlite://:memory:'
            settings['CACHE_URL'] = 'locmem://'

        if not settings['DATABASE_URL']:
            settings['DATABASE_URL'] = 'sqlite:///{}'.format(
                os.path.join(settings['DATA_ROOT'], 'db.sqlite3'))
            warnings.warn(
                'no database configured. Falling back to DATABASE_URL={0}'.
                format(settings['DATABASE_URL']),
                RuntimeWarning,
            )
        settings['DATABASES']['default'] = dj_database_url.parse(
            settings['DATABASE_URL'])

        if not settings['CACHE_URL']:
            settings['CACHE_URL'] = 'locmem://'
            warnings.warn(
                'no cache configured. Falling back to CACHE_URL={0}'.format(
                    settings['CACHE_URL']),
                RuntimeWarning,
            )
        settings['CACHES']['default'] = django_cache_url.parse(
            settings['CACHE_URL'])

        settings['ROOT_URLCONF'] = env('ROOT_URLCONF', 'urls')
        settings['ADDON_URLS_I18N'].append('aldryn_django.i18n_urls')

        settings['WSGI_APPLICATION'] = 'wsgi.application'

        settings['INSTALLED_APPS'].extend([
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.sites',
            'django.contrib.messages',
            'django.contrib.admin',
            'django.contrib.staticfiles',
            'aldryn_django',
        ])

        if settings['ENABLE_SYNCING'] or settings['DISABLE_TEMPLATE_CACHE']:
            loader_list_class = list
        else:
            loader_list_class = CachedLoader

        settings['TEMPLATES'] = [
            {
                'BACKEND':
                'django.template.backends.django.DjangoTemplates',
                'DIRS':
                env(
                    'TEMPLATE_DIRS',
                    [os.path.join(settings['BASE_DIR'], 'templates')],
                ),
                'OPTIONS': {
                    'debug':
                    boolean_ish(env('TEMPLATE_DEBUG', settings['DEBUG'])),
                    'context_processors': [
                        'django.contrib.auth.context_processors.auth',
                        'django.contrib.messages.context_processors.messages',
                        'django.template.context_processors.i18n',
                        'django.template.context_processors.debug',
                        'django.template.context_processors.request',
                        'django.template.context_processors.media',
                        'django.template.context_processors.csrf',
                        'django.template.context_processors.tz',
                        'django.template.context_processors.static',
                        'aldryn_django.context_processors.debug',
                    ],
                    'loaders':
                    loader_list_class([
                        'django.template.loaders.filesystem.Loader',
                        'django.template.loaders.app_directories.Loader',
                        'django.template.loaders.eggs.Loader',
                    ]),
                },
            },
        ]

        settings['MIDDLEWARE_CLASSES'] = [
            'django.contrib.sessions.middleware.SessionMiddleware',
            # 'django.middleware.common.CommonMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.locale.LocaleMiddleware',
            'django.contrib.sites.middleware.CurrentSiteMiddleware',
            'django.middleware.common.CommonMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
            # 'django.middleware.security.SecurityMiddleware',
        ]

        if not env('DISABLE_GZIP'):
            settings['MIDDLEWARE_CLASSES'].insert(
                0, 'django.middleware.gzip.GZipMiddleware')

        settings['SITE_ID'] = env('SITE_ID', 1)

        settings['ADDON_URLS_I18N_LAST'] = 'aldryn_django.urls_redirect'

        self.domain_settings(data, settings, env=env)
        self.security_settings(data, settings, env=env)
        self.server_settings(settings, env=env)
        self.logging_settings(settings, env=env)
        # Order matters, sentry settings rely on logging being configured.
        self.sentry_settings(settings, env=env)
        self.storage_settings_for_media(settings, env=env)
        self.storage_settings_for_static(data, settings, env=env)
        self.email_settings(data, settings, env=env)
        self.i18n_settings(data, settings, env=env)
        self.migration_settings(settings, env=env)
        settings['ALDRYN_DJANGO_ENABLE_GIS'] = data['enable_gis']
        if settings['ALDRYN_DJANGO_ENABLE_GIS']:
            self.gis_settings(settings, env=env)
        return settings
コード例 #47
0
DEBUG = env('DJANGO_DEBUG', 'off') == 'on'

GEOS_LIBRARY_PATH = '/usr/local/lib/libgeos_c.so'
GDAL_LIBRARY_PATH = '/usr/local/lib/libgdal.so'

SECRET_KEY = env('SECRET_KEY', required=True)
DATABASE_URL = env('DATABASE_URL', required=True)
DATABASES = {'default': dj_database_url.parse(DATABASE_URL)}
DATABASES['default']['CONN_MAX_AGE'] = 60
DATABASES['default']['ATOMIC_REQUESTS'] = True
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
REDIS_URL = env('REDIS_URL', required=True)
BROKER_URL = env('BROKER_URL', REDIS_URL)
CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND', REDIS_URL)
CACHE_URL = env('CACHE_URL', REDIS_URL)
CACHES = {'default': django_cache_url.parse(CACHE_URL)}
if CACHES['default']['BACKEND'] == 'django_redis.cache.RedisCache':
    if 'OPTIONS' not in CACHES['default']:
        CACHES['default']['OPTIONS'] = {}
    CACHES['default']['OPTIONS']['CLIENT_CLASS'] = 'django_redis.client.DefaultClient'

RAVEN_CONFIG = {
    'dsn': env('RAVEN_DSN'),
    'release': env('RAPIDPRO_VERSION'),
}

# -----------------------------------------------------------------------------------
# Used when creating callbacks for Twilio, Nexmo etc..
# -----------------------------------------------------------------------------------
HOSTNAME = env('DOMAIN_NAME', 'rapidpro.ngrok.com')
TEMBA_HOST = env('TEMBA_HOST', HOSTNAME)
コード例 #48
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_db_url_returns_database_cache_backend():
    url = 'db://super_caching_table'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'django.core.cache.backends.db.DatabaseCache'
    assert config['LOCATION'] == 'super_caching_table'
コード例 #49
0
def test_basic_config_with_password():
    url = f'redis://:[email protected]:6379/?lib={redis_cache}'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'redis_cache.RedisCache'
    assert config['LOCATION'] == 'redis://:[email protected]:6379/0'
コード例 #50
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_file_url_returns_file_cache_backend():
    config = django_cache_url.parse('file:///herp')

    assert config['BACKEND'] == 'django.core.cache.backends.filebased.FileBasedCache'
    assert config['LOCATION'] == '/herp'
コード例 #51
0
def test_rediss_config():
    url = f'rediss://127.0.0.1:6379/?lib={redis_cache}'
    config = django_cache_url.parse(url)

    assert config['BACKEND'] == 'redis_cache.RedisCache'
    assert config['LOCATION'] == 'rediss://127.0.0.1:6379/0'
コード例 #52
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_query_string_params_are_converted_to_cache_arguments():
    url = 'redis:///path/to/socket?key_prefix=foo&bar=herp'
    config = django_cache_url.parse(url)

    assert config['KEY_PREFIX'] == 'foo'
    assert config['BAR'] == 'herp'
コード例 #53
0
 def cache_settings(self, settings, env):
     import django_cache_url
     cache_url = env('CACHE_URL')
     if cache_url:
         settings['CACHES']['default'] = django_cache_url.parse(cache_url)
コード例 #54
0
ファイル: test_core.py プロジェクト: alanjds/django-cache-url
def test_unknown_cache_backend():
    with pytest.raises(Exception):
        django_cache_url.parse('donkey://127.0.0.1/foo')
コード例 #55
0
ファイル: __init__.py プロジェクト: akx/django-cee-proto
 def cache_url(self, var="CACHE_URL", default=NOT_SET, **kwargs):
     url = self._get_value(var, cast=text_type, default=default)
     return dict(django_cache_url.parse(url), **kwargs)