def prepare_celery():
    """Runs the djcelery loader which is required to set the correct backend/scheduler
    Then adds some signal callbacks to ensure all tasks are registered correctly.
    """
    djcelery.setup_loader()
    beat_init.connect(beat_update_schedule)
    worker_init.connect(celeryd_discover_tasks)
Beispiel #2
0
def postprocess_settings(globals):
    import re
    RE = re.compile(r"%\([A-Z_]+\)s")
    for k, v in list(globals.items()):
        if isinstance(v, basestring) and RE.search(v):
            globals[k] = v % globals

    try:
        import djcelery
        djcelery.setup_loader()
    except ImportError:
        pass

    CELERY_QUEUE_PREFIX = globals['CELERY_QUEUE_PREFIX']
    LANGUAGE_CODE = globals['LANGUAGE_CODE'] 
    CELERY_DEFAULT_QUEUE = CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".default"
    
    CELERY_QUEUES = {
        CELERY_DEFAULT_QUEUE: {
            "binding_key": CELERY_DEFAULT_QUEUE,
        },
        CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".notice": {
            "binding_key": CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".notice.#",
        },
        CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".massemail": {
            "binding_key": CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".massemail.#",
        },
        CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".recommendations": {
            "binding_key": CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".recommendations.#",
        },
    }
    
    CELERY_MASSMAIL_TASK_CONFIG = {
        'routing_key' : CELERY_QUEUE_PREFIX + LANGUAGE_CODE + ".massemail.email",
    }

    globals['CELERY_QUEUES'] = CELERY_QUEUES
    globals['CELERY_DEFAULT_QUEUE'] = CELERY_DEFAULT_QUEUE
    globals['CELERY_MASSMAIL_TASK_CONFIG'] = CELERY_MASSMAIL_TASK_CONFIG

    globals['COUNTRY_CODE'] = globals['COUNTRY_CODE'].upper()

    # TODO - remove key_func along with cache KEY_PREFIX option
    # (it is redundand as cache.Key add site prefix too)
    
    from django.utils.encoding import smart_str
    def key_func(key, prefix, version):
        if key.startswith('common_'):
            prefix = 'common'
        return ':'.join((prefix, str(version), smart_str(key)))

    globals['CACHES']['default']['KEY_FUNCTION'] = key_func
Beispiel #3
0
def pytest_configure(config):
    if not settings.configured:
        settings.configure(
            DATABASE_ENGINE='sqlite3',
            DATABASES={
                'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'TEST_NAME': 'opbeat_tests.db',
                    'NAME': 'opbeat_tests.db',
                },
            },
            # HACK: this fixes our threaded runserver remote tests
            DATABASE_NAME='opbeat_tests.db',
            TEST_DATABASE_NAME='opbeat_tests.db',
            INSTALLED_APPS=[
                'django.contrib.auth',
                'django.contrib.admin',
                'django.contrib.sessions',
                'django.contrib.sites',
                'django.contrib.redirects',

                'django.contrib.contenttypes',

                'djcelery',  # celery client

                'opbeat.contrib.django',
                'tests.contrib.django.testapp',
            ],
            ROOT_URLCONF='tests.contrib.django.testapp.urls',
            DEBUG=False,
            SITE_ID=1,
            BROKER_HOST="localhost",
            BROKER_PORT=5672,
            BROKER_USER="******",
            BROKER_PASSWORD="******",
            BROKER_VHOST="/",
            CELERY_ALWAYS_EAGER=True,
            TEMPLATE_DEBUG=True,
            TEMPLATE_DIRS=[BASE_TEMPLATE_DIR],
            ALLOWED_HOSTS=['*'],
            MIDDLEWARE_CLASSES=[
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
            ],
        )
        import django
        if hasattr(django, 'setup'):
            django.setup()
        import djcelery
        djcelery.setup_loader()
Beispiel #4
0
    def __init__(self):
        super(MyCommonSettings, self).__init__()

        self.add_apps(installed_apps)

        self.add_middlewares((
            'django.middleware.common.CommonMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.locale.LocaleMiddleware',
            'django.middleware.transaction.TransactionMiddleware',
        ))

        import djcelery
        djcelery.setup_loader()
Beispiel #5
0
def setup_environ():
    """Sets up the Django environment

    1. sets up path and vendor/ stuff
    2. validates settings
    3. sets up django-celery

    """
    global _has_setup_environ

    if _has_setup_environ:
        return

    # Adjust the python path and put local packages in front.
    prev_sys_path = list(sys.path)

    # Make root application importable without the need for
    # python setup.py install|develop
    sys.path.append(ROOT)

    # FIXME: This is vendor/-specific. When we ditch vendor/ we can
    # ditch this.

    # Check for ~/.virtualenvs/fjordvagrant/. If that doesn't exist, then
    # launch all the vendor/ stuff.
    possible_venv = os.path.expanduser('~/.virtualenvs/fjordvagrant/')
    if not os.path.exists(possible_venv):
        os.environ['USING_VENDOR'] = '1'
        site.addsitedir(path('vendor'))

        # Move the new items to the front of sys.path. (via virtualenv)
        new_sys_path = []
        for item in list(sys.path):
            if item not in prev_sys_path:
                new_sys_path.append(item)
                sys.path.remove(item)
        sys.path[:0] = new_sys_path

    from django.conf import settings
    validate_settings(settings)

    import djcelery
    djcelery.setup_loader()

    _has_setup_environ = True
Beispiel #6
0
def init_ureport_env():
    ureportProject = os.environ['UREPORT_HOME'] + "/ureport_project" 

    print "\nInitialising environment for functional tests...\n" 

    print "ureport is in [" + ureportProject + "]"
    print "Using settings [ci_settings]\n"


    sys.path.insert(0,ureportProject) 
    import ci_settings

    setup_environ(ci_settings)

    import djcelery
    djcelery.setup_loader()
    
    print "\nuReport environment initialised.\n"
Beispiel #7
0
def pytest_configure(config):
    where_am_i = os.path.dirname(os.path.abspath(__file__))

    if not settings.configured:
        settings.configure(
            DATABASE_ENGINE='sqlite3',
            DATABASES={
                'default': {
                    'NAME': ':memory:',
                    'ENGINE': 'django.db.backends.sqlite3',
                    'TEST_NAME': ':memory:',
                },
            },
            DATABASE_NAME=':memory:',
            TEST_DATABASE_NAME=':memory:',
            INSTALLED_APPS=[
                'django.contrib.auth',
                'django.contrib.admin',
                'django.contrib.sessions',
                'django.contrib.sites',

                # Included to fix Disqus' test Django which solves IntegrityMessage case
                'django.contrib.contenttypes',

                'djcelery',  # celery client

                'raven.contrib.django',
            ],
            ROOT_URLCONF='',
            DEBUG=False,
            SITE_ID=1,
            BROKER_HOST="localhost",
            BROKER_PORT=5672,
            BROKER_USER="******",
            BROKER_PASSWORD="******",
            BROKER_VHOST="/",
            SENTRY_ALLOW_ORIGIN='*',
            CELERY_ALWAYS_EAGER=True,
            TEMPLATE_DEBUG=True,
            TEMPLATE_DIRS=[os.path.join(where_am_i, 'tests', 'contrib', 'django', 'templates')],
        )
        import djcelery
        djcelery.setup_loader()
Beispiel #8
0
def pytest_configure(config):
    where_am_i = os.path.dirname(os.path.abspath(__file__))

    if not settings.configured:
        settings.configure(
            DATABASE_ENGINE="sqlite3",
            DATABASES={
                "default": {"NAME": ":memory:", "ENGINE": "django.db.backends.sqlite3", "TEST_NAME": ":memory:"}
            },
            DATABASE_NAME=":memory:",
            TEST_DATABASE_NAME=":memory:",
            INSTALLED_APPS=[
                "django.contrib.auth",
                "django.contrib.admin",
                "django.contrib.sessions",
                "django.contrib.sites",
                # Included to fix Disqus' test Django which solves IntegrityMessage case
                "django.contrib.contenttypes",
                "djcelery",  # celery client
                "raven.contrib.django",
            ],
            ROOT_URLCONF="",
            DEBUG=False,
            SITE_ID=1,
            BROKER_HOST="localhost",
            BROKER_PORT=5672,
            BROKER_USER="******",
            BROKER_PASSWORD="******",
            BROKER_VHOST="/",
            CELERY_ALWAYS_EAGER=True,
            TEMPLATE_DEBUG=True,
            TEMPLATE_DIRS=[os.path.join(where_am_i, "tests", "contrib", "django", "templates")],
        )
        import djcelery

        djcelery.setup_loader()
def setup_environ(manage_file, settings=None):
    """Sets up a Django app within a manage.py file.

    Keyword Arguments

    **settings**
        An imported settings module. Without this, playdoh tries to import
        these modules (in order): settings_local, settings

    """
    # sys is global to avoid undefined local
    global sys, current_settings, execute_manager, ROOT

    ROOT = os.path.dirname(os.path.abspath(manage_file))

    # Adjust the python path and put local packages in front.
    prev_sys_path = list(sys.path)

    # Make settings_local importable
    sys.path.append(ROOT)
    # Give precedence to your app's parent dir, which contains __init__.py
    sys.path.append(os.path.abspath(os.path.join(ROOT, os.pardir)))

    site.addsitedir(path('apps'))
    site.addsitedir(path('lib'))

    # Local (project) vendor library
    site.addsitedir(path('vendor-local'))
    site.addsitedir(path('vendor-local/lib/python'))

    # Global (upstream) vendor library
    site.addsitedir(path('vendor'))
    site.addsitedir(path('vendor/lib/python'))

    # Move the new items to the front of sys.path. (via virtualenv)
    new_sys_path = []
    for item in list(sys.path):
        if item not in prev_sys_path:
            new_sys_path.append(item)
            sys.path.remove(item)
    sys.path[:0] = new_sys_path

    from django.core.management import execute_manager, setup_environ
    if not settings:
        if os.path.isfile(os.path.join(ROOT, 'settings_local.py')):
            import settings_local as settings
            warnings.warn("Using settings_local.py is deprecated. See "
                     "http://playdoh.readthedocs.org/en/latest/upgrading.html",
                          DeprecationWarning)
        else:
            import settings
    current_settings = settings
    validate_settings(settings)

    # If we want to use django settings anywhere, we need to set up the
    # required environment variables.
    setup_environ(settings)

    # Import for side-effect: configures logging handlers.
    # pylint: disable-msg=W0611
    import log_settings
    # Monkey-patch django forms to avoid having to use Jinja2's |safe
    # everywhere.
    import safe_django_forms
    safe_django_forms.monkeypatch()

    # Monkey-patch Django's csrf_protect decorator to use session-based CSRF
    # tokens:
    if 'session_csrf' in settings.INSTALLED_APPS:
        import session_csrf
        session_csrf.monkeypatch()

    # Configure Celery (optional)
    if 'djcelery' in settings.INSTALLED_APPS:
        import djcelery
        djcelery.setup_loader()
Beispiel #10
0
#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4 encoding=utf-8

import os
from django.contrib import messages

# odd celery fix
import djcelery; djcelery.setup_loader()

CACHE_BACKEND = 'memcached://127.0.0.1:11211/'

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = ()
MANAGERS = ADMINS


# default to the system's timezone settings
TIME_ZONE = "UTC"


# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

LANGUAGES = (
    ('en', 'English'),
    ('fr', 'French'),
    # ('hin', 'Hindi'),
    )
Beispiel #11
0
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
import sys
import djcelery
from datetime import timedelta

djcelery.setup_loader()

PROJECT_NAME = 'chat'
ADMINS = (('Balkan', '*****@*****.**'), ('bahattincinic', '*****@*****.**'))
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
APPS = os.path.join(BASE_DIR, 'apps')
sys.path.insert(1, APPS)
sys.path.insert(2, BASE_DIR)

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'xv-#91!%mv!(m0yba%t0^1t683mvwj_c!5d1z--^8!2x5z(6ss'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = DEBUG

# TEMPLATE CONFIGURATION
# See:
# https://docs.djangoproject.com/en/dev/ref/
# settings/#template-context-processors
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
Beispiel #12
0
# Application definition
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hashtag', # Our app
    'djcelery', # Django Celery for automatization
    'kombu.transport.django', # Queue for Celery
    'rest_framework', # Rest API
)

import djcelery
djcelery.setup_loader() # Load Django Celery setting
BROKER_URL = "django://" # Broker dir for queue manager

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'ever.urls'

WSGI_APPLICATION = 'ever.wsgi.application'
Beispiel #13
0
def configure():
    if not settings.configured:

        test_settings = {
            'DATABASES': {
                'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': ':memory:',
                },
            },
            'INSTALLED_APPS': [
                'opps.contrib.admin',
                'opps.contrib.fileupload',
                'django.contrib.admin',
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                'django.contrib.staticfiles',
                'django.contrib.sites',
                'django.contrib.redirects',

                'opps.core',
                'opps.core.tags',
                'opps.images',
                'opps.containers',
                'opps.boxes',
                'opps.channels',
                'opps.articles',
                'opps.sitemaps',
                'opps.flatpages',
                'opps.archives',
                'opps.views',
                'opps.fields',
                'opps.api',
                'opps.contrib.notifications',
            ],
            'TEMPLATE_CONTEXT_PROCESSORS': (
                'opps.channels.context_processors.channel_context',
            ),
            'MIDDLEWARE_CLASSES': (
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.middleware.common.CommonMiddleware',
                'django.middleware.csrf.CsrfViewMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
                'django.middleware.clickjacking.XFrameOptionsMiddleware',
                'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
            ),
            'HAYSTACK_CONNECTIONS': {
                'default': {
                    'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
                }
            },
            'OPPS_MULTISITE_FALLBACK': False,
            'ROOT_URLCONF': 'tests._site.urls',
            'STATIC_URL': '/static/',
            'ADMINS': ('*****@*****.**',),
            'DEBUG': False,
            'SITE_ID': 1,
            'BROKER_URL': 'redis://localhost:6379/0',
            'CELERY_RESULT_BACKEND': 'redis://localhost:6379/0',
            'OPPS_MIRROR_CHANNEL': True,
            'OPPS_DB_HOST': '127.0.0.1',
            'OPPS_DB_PORT': 6379,
            'OPPS_DB_NAME': 'opps',
            'OPPS_DB_ENGINE': 'opps.db._redis.Redis',
        }

        djcelery.setup_loader()
        settings.configure(**test_settings)
Beispiel #14
0
# 163 SMTP 配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
#发送邮件的邮箱
EMAIL_HOST_USER = '******'
#在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = '******'
#收件人看到的发件人
EMAIL_FROM = 'dailyfresh<*****@*****.**>'


# 配置 django-celery
import djcelery
djcelery.setup_loader()  # 去每一个注册的应用下, 找一个叫 task.py 的文件, 到文件中去加载celery 任务函数
BROKER_URL = 'redis://127.0.0.1:6379/2'  # 指定哪个 redis 数据库哪个表来提供队列,用来存放 celery 任务函数


# 配置 tinymce 富文本编辑器
TINYMCE_DEFAULT_CONFIG = {
    'theme': 'advanced',  # 主题
    'width': 600,
    'height': 400,  # 编辑窗口的大小
}

HAYSTACK_CONNECTIONS = {
    'default': {
        #使用whoosh引擎
        'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',
        #索引文件路径, 创建索引时自动创建该文件
Beispiel #15
0
 def run(self):
     from django.conf import settings
     settings.configure(
         DATABASES={
             'default': {
                 'NAME': 'test.db',
                 'TEST_NAME': 'test.db',
                 'ENGINE': 'django.db.backends.sqlite3'
             }
         },
         INSTALLED_APPS = (
             'django.contrib.auth',
             'django.contrib.contenttypes',
             'django.contrib.sessions',
             'django.contrib.staticfiles',
             'bakery',
             'djkombu',
             'djcelery',
         ),
         MIDDLEWARE_CLASSES=(),
         TEMPLATE_DIRS = (
             os.path.abspath(
                  os.path.join(
                      os.path.dirname(__file__),
                      'bakery',
                      'tests',
                      'templates',
                  ),
             ),
         ),
         BUILD_DIR = tempfile.mkdtemp(),
         STATIC_ROOT = os.path.abspath(
              os.path.join(
                  os.path.dirname(__file__),
                  'bakery',
                  'tests',
                  'static',
              ),
         ),
         STATIC_URL = '/static/',
         MEDIA_ROOT = os.path.abspath(
              os.path.join(
                  os.path.dirname(__file__),
                  'bakery',
                  'tests',
                  'media',
              ),
         ),
         MEDIA_URL = '/media/',
         BAKERY_VIEWS = ('bakery.tests.MockDetailView',),
         # The publish management command needs these to exit, but
         # we're mocking boto, so we can put nonesense in here
         AWS_ACCESS_KEY_ID = 'MOCK_ACCESS_KEY_ID',
         AWS_SECRET_ACCESS_KEY = 'MOCK_SECRET_ACCESS_KEY',
         AWS_BUCKET_NAME = 'mock_bucket',
         # Celery configuration
         BROKER_URL = 'django://',
     )
     import django
     django.setup()
     import djcelery
     djcelery.setup_loader()
     from django.core.management import call_command
     call_command('test', 'bakery.tests', verbosity=3)
Beispiel #16
0
def pytest_configure(config):
    try:
        from django.conf import settings
    except ImportError:
        settings = None
    if settings is not None and not settings.configured:
        import django

        if django.VERSION >= (2, 0):
            middleware_settings_name = 'MIDDLEWARE'
        else:
            middleware_settings_name = 'MIDDLEWARE_CLASSES'

        # django-celery does not work well with Django 1.8+
        if django.VERSION < (1, 8):
            djcelery = ['djcelery']
        else:
            djcelery = []
        settings_dict = dict(
            DATABASES={
                'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': 'opbeat_tests.db',
                    'TEST_NAME': 'opbeat_tests.db',
                    'TEST': {
                        'NAME': 'opbeat_tests.db',
                    }
                },
            },
            TEST_DATABASE_NAME='opbeat_tests.db',
            INSTALLED_APPS=[
                'django.contrib.auth',
                'django.contrib.admin',
                'django.contrib.sessions',
                'django.contrib.sites',
                'django.contrib.redirects',

                'django.contrib.contenttypes',

                'opbeat.contrib.django',
                'tests.contrib.django.testapp',
            ] + djcelery,
            ROOT_URLCONF='tests.contrib.django.testapp.urls',
            DEBUG=False,
            SITE_ID=1,
            BROKER_HOST="localhost",
            BROKER_PORT=5672,
            BROKER_USER="******",
            BROKER_PASSWORD="******",
            BROKER_VHOST="/",
            CELERY_ALWAYS_EAGER=True,
            TEMPLATE_DEBUG=False,
            TEMPLATE_DIRS=[BASE_TEMPLATE_DIR],
            ALLOWED_HOSTS=['*'],
            MIDDLEWARE_CLASSES=[
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
            ],
            TEMPLATES=[
                {
                    'BACKEND': 'django.template.backends.django.DjangoTemplates',
                    'DIRS': [BASE_TEMPLATE_DIR],
                    'OPTIONS': {
                        'context_processors': [
                            'django.contrib.auth.context_processors.auth',
                        ],
                        'loaders': [
                            'django.template.loaders.filesystem.Loader',
                        ],
                        'debug': False,
                    },
                },
            ]

        )
        settings_dict[middleware_settings_name] = [
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
        ]
        settings.configure(**settings_dict)
        if hasattr(django, 'setup'):
            django.setup()
        if django.VERSION < (1, 8):
            import djcelery
            djcelery.setup_loader()
Beispiel #17
0
def pytest_configure(config):
    try:
        from django.conf import settings
    except ImportError:
        settings = None
    if settings is not None and not settings.configured:
        import django

        # django-celery does not work well with Django 1.8+
        if django.VERSION < (1, 8):
            djcelery = ["djcelery"]
        else:
            djcelery = []
        settings.configure(
            DATABASES={
                "default": {
                    "ENGINE": "django.db.backends.sqlite3",
                    "NAME": "opbeat_tests.db",
                    "TEST_NAME": "opbeat_tests.db",
                    "TEST": {"NAME": "opbeat_tests.db"},
                }
            },
            # HACK: this fixes our threaded runserver remote tests
            DATABASE_ENGINE="sqlite3",
            DATABASE_NAME="opbeat_tests.db",
            TEST_DATABASE_NAME="opbeat_tests.db",
            INSTALLED_APPS=[
                "django.contrib.auth",
                "django.contrib.admin",
                "django.contrib.sessions",
                "django.contrib.sites",
                "django.contrib.redirects",
                "django.contrib.contenttypes",
                "opbeat.contrib.django",
                "tests.contrib.django.testapp",
            ]
            + djcelery,
            ROOT_URLCONF="tests.contrib.django.testapp.urls",
            DEBUG=False,
            SITE_ID=1,
            BROKER_HOST="localhost",
            BROKER_PORT=5672,
            BROKER_USER="******",
            BROKER_PASSWORD="******",
            BROKER_VHOST="/",
            CELERY_ALWAYS_EAGER=True,
            TEMPLATE_DEBUG=False,
            TEMPLATE_DIRS=[BASE_TEMPLATE_DIR],
            ALLOWED_HOSTS=["*"],
            MIDDLEWARE_CLASSES=[
                "django.contrib.sessions.middleware.SessionMiddleware",
                "django.contrib.auth.middleware.AuthenticationMiddleware",
                "django.contrib.messages.middleware.MessageMiddleware",
            ],
            TEMPLATES=[
                {
                    "BACKEND": "django.template.backends.django.DjangoTemplates",
                    "DIRS": [BASE_TEMPLATE_DIR],
                    "OPTIONS": {
                        "context_processors": ["django.contrib.auth.context_processors.auth"],
                        "loaders": ["django.template.loaders.filesystem.Loader"],
                        "debug": False,
                    },
                }
            ],
        )
        if hasattr(django, "setup"):
            django.setup()
        if django.VERSION < (1, 8):
            import djcelery

            djcelery.setup_loader()
Beispiel #18
0
class Base(Configuration):
    """Base configuration"""
    SECRET_KEY = 'Not a secret =)'

    DEBUG = values.BooleanValue(False)

    ALLOWED_HOSTS = values.ListValue()

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django_extensions',
        'rest_framework',
        'django_filters',
        'corsheaders',
        'social_django',
        'oauth2_provider',
        'rest_framework.authtoken',
        'rest_framework_social_oauth2',
        'fcm_django',
        'apps.candidates',
        'apps.authentication',
        'apps.departments',
        'apps.interviews',
        'apps.requests',
        'apps.users',
        'apps.vacancies',
        'apps.templates',
        'djcelery',
    ]
    djcelery.setup_loader()

    SOCIAL_AUTH_RAISE_EXCEPTIONS = True
    SOCIAL_AUTH_URL_NAMESPACE = 'social'

    SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = values.SecretValue()
    SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = values.SecretValue()

    CSRF_COOKIE_SECURE = False
    CORS_ORIGIN_ALLOW_ALL = True

    FCM_SERVER_KEY = values.SecretValue().to_python(
        os.environ.get('DJANGO_FCM_SERVER_KEY'))

    FCM_DJANGO_SETTINGS = {
        "FCM_SERVER_KEY": FCM_SERVER_KEY,
    }

    AUTHENTICATION_BACKENDS = (
        'social_core.backends.google.GoogleOAuth2',
        'social_core.backends.google.GooglePlusAuth',
        'rest_framework_social_oauth2.backends.DjangoOAuth2',
        'django.contrib.auth.backends.ModelBackend',
    )

    SOCIAL_AUTH_PIPELINE = (
        'social_core.pipeline.social_auth.social_details',
        'social_core.pipeline.social_auth.social_uid',
        'social_core.pipeline.social_auth.auth_allowed',
        'social_core.pipeline.social_auth.social_user',
        'social_core.pipeline.user.get_username',
        'social_core.pipeline.social_auth.associate_by_email',
        'social_core.pipeline.social_auth.associate_user',
        'social_core.pipeline.social_auth.load_extra_data',
        'social_core.pipeline.user.user_details',
    )

    MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware',
    ]

    CORS_ORIGIN_WHITELIST = values.ListValue()

    CORS_ALLOW_METHODS = (
        'DELETE',
        'GET',
        'OPTIONS',
        'PATCH',
        'POST',
        'PUT',
    )

    CORS_ALLOW_HEADERS = ('accept', 'accept-encoding', 'authorization',
                          'content-type', 'dnt', 'origin', 'user-agent',
                          'x-csrftoken', 'x-requested-with', 'role',
                          'access-control-allow-headers',
                          'access-control-expose-headers')

    ROOT_URLCONF = 'urls'

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': STATIC_ROOT,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'social_django.context_processors.backends',
                    'social_django.context_processors.login_redirect',
                ],
            },
        },
    ]

    LOGIN_REDIRECT_URL = '/api/v1/devices/'

    for config in TEMPLATES:
        config['OPTIONS']['debug'] = DEBUG

    FIXTURE_DIRS = ('apps/fixtures', )

    WSGI_APPLICATION = 'wsgi.application'

    DATABASES = values.DatabaseURLValue()

    AUTH_USER_MODEL = 'users.User'

    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME':
            'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS':
        'apps.utils.pagination.SizedPageNumberPagination',
        'PAGE_SIZE':
        10,
        'DEFAULT_VERSIONING_CLASS':
        'rest_framework.versioning.NamespaceVersioning',
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.AllowAny',
        ],
        'DEFAULT_FILTER_BACKENDS': (
            'rest_framework.filters.SearchFilter',
            'django_filters.rest_framework.DjangoFilterBackend',
            'rest_framework.filters.OrderingFilter',
        ),
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
            'rest_framework_social_oauth2.authentication.SocialAuthentication',
            'rest_framework.authentication.BasicAuthentication',
            'rest_framework.authentication.SessionAuthentication',
        ),
    }

    LANGUAGE_CODE = 'en-us'

    TIME_ZONE = 'Asia/Bishkek'

    USE_I18N = True

    USE_L10N = True

    USE_TZ = True

    RABBITMQ_USERNAME = values.SecretValue()
    RABBITMQ_PASSWORD = values.SecretValue()
    RABBITMQ_HOST = values.SecretValue()
    RABBITMQ_PORT = values.SecretValue()

    BROKER_URL = "amqp://{username}:{password}@{host}:{port}//".format(
        username=RABBITMQ_USERNAME,
        password=RABBITMQ_PASSWORD,
        host=RABBITMQ_HOST,
        port=RABBITMQ_PORT)
Beispiel #19
0
INSTALLED_APPS = (
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.sites",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "django.contrib.admin",
    "django.contrib.admindocs",
    "south",
    "gunicorn",
    "djcelery",
) + PROJECT_APPS

CELERY_TASK_RESULT_EXPIRES = datetime.timedelta(minutes=30)
setup_loader()

ugettext = lambda s: s
LANGUAGES = (("en", ugettext("English")), ("ru", ugettext("Russian")), ("ua", ugettext("Ukrainian")))

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}},
    "handlers": {
        "mail_admins": {
            "level": "ERROR",
            "filters": ["require_debug_false"],
            "class": "django.utils.log.AdminEmailHandler",
        }
    },
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'celerytest',
    'djcelery', # Para integrar celery en django
)

import djcelery
djcelery.setup_loader() # Habilita la edición desde el admin de django

# Configuración varia para Celery
BROKER_URL = 'amqp://*****:*****@localhost:5672/'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Europe/Madrid'


# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
    'version': 1,
Beispiel #21
0
    'django.contrib.admindocs',

    "corsheaders",
    'django_extensions',

    'raven.contrib.django.raven_compat',
    "applications.users",
    "applications.ball",
    "applications.ueditor",
    "djcelery",
    "south"
)

# djcelery setting
import djcelery  ###
djcelery.setup_loader()  ###
CELERY_TIMEZONE = 'Asia/Shanghai'  #并没有北京时区,与下面TIME_ZONE应该一致
BROKER_URL = config.get("celery", "BROKER_URL")  #任何可用的redis都可以,不一定要在django server运行的主机上
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(pathname)s %(lineno)s %(funcName)s %(message)s'
        },
    },
    'filters': {
        'info': {
            '()': 'libs.logs.InfoLevelFilter',
Beispiel #22
0
        'NAME': 'mydb',
        # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '******',
        'PASSWORD': '******',
        'HOST': 'localhost',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

# ==========
# = Celery =
# ==========

import djcelery
djcelery.setup_loader()
CELERY_ROUTES = {
    "work-queue": {
        "queue": "work_queue",
        "binding_key": "work_queue"
    },
    "new-feeds": {
        "queue": "new_feeds",
        "binding_key": "new_feeds"
    },
    "push-feeds": {
        "queue": "push_feeds",
        "binding_key": "push_feeds"
    },
    "update-feeds": {
        "queue": "update_feeds",
Beispiel #23
0
            'level': 'ERROR',
            'propagate': True,
        },
    }
}
########## END LOGGING CONFIGURATION

########## CELERY CONFIGURATION
# See: http://celery.readthedocs.org/en/latest/configuration.html#celery-task-result-expires
CELERY_TASK_RESULT_EXPIRES = timedelta(minutes=30)

# See: http://docs.celeryproject.org/en/master/configuration.html#std:setting-CELERY_CHORD_PROPAGATES
CELERY_CHORD_PROPAGATES = True

# See: http://celery.github.com/celery/django/
setup_loader()
########## END CELERY CONFIGURATION

########## WSGI CONFIGURATION
# See: https://docs.djangoproject.com/en/dev/ref/settings/#wsgi-application
WSGI_APPLICATION = 'wsgi.application'
########## END WSGI CONFIGURATION

########## COMPRESSION CONFIGURATION
# See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_ENABLED
COMPRESS_ENABLED = True

# See: http://django-compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_CSS_HASHING_METHOD
COMPRESS_CSS_HASHING_METHOD = 'content'

# See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_CSS_FILTERS