示例#1
0
class Public(email.Email, databases.Databases, common.Common):
    """General settings for all public servers."""

    CSRF_COOKIE_HTTPONLY = True

    SECRET_KEY = values.SecretValue()

    SECURE_BROWSER_XSS_FILTER = True

    SECURE_CONTENT_TYPE_NOSNIFF = True

    SILENCED_SYSTEM_CHECKS = values.ListValue([])

    X_FRAME_OPTIONS = 'DENY'
示例#2
0
class Email(object):
    """Email settings for SMTP."""

    EMAIL_HOST = values.Value('localhost')

    EMAIL_HOST_PASSWORD = values.SecretValue()

    EMAIL_HOST_USER = values.Value('*****@*****.**')

    EMAIL_PORT = values.IntegerValue(465)

    EMAIL_USE_SSL = values.BooleanValue(True)

    EMAIL_USE_TLS = values.BooleanValue(False)
示例#3
0
class Production(Staging):
    """
    The in-production settings.
    """

    AWS_REGION = values.Value("us-east-1", environ_prefix=None)
    AWS_ACCESS_KEY_ID = values.SecretValue(environ_prefix=None)
    AWS_SECRET_ACCESS_KEY = values.SecretValue(environ_prefix=None)
    AWS_S3_BUCKET_NAME = values.Value(environ_prefix=None)

    CONTRACTS_DOCUMENT_STORAGE = "django_s3_storage.storage.S3Storage"

    @property
    def CACHES(self):
        return {
            "default": {
                "BACKEND": "django_redis.cache.RedisCache",
                "LOCATION": f"{self.REDIS_URL}/1",
                "OPTIONS": {
                    "CLIENT_CLASS": "django_redis.client.DefaultClient"
                },
            }
        }
示例#4
0
class Production(Development):
    """
    Production settings.

    """
    DEBUG = False
    TEMPLATE_DEBUG = DEBUG

    # Empty by design to trigger a warning to fill it with something sensible.
    SECRET_KEY = values.SecretValue()

    # Switch the Celery broker URL to RabbitMQ
    BROKER_URL = 'amqp://*****:*****@localhost:5672//'
    CELERY_ALWAYS_EAGER = False
示例#5
0
class Staging(BaseConfiguration):
    DEBUG = False
    # SENTRY_DSN = values.URLValue(environ_required=True)
    STATIC_ROOT = "/host/static/"
    MEDIA_ROOT = "/host/uploads/"
    ALLOWED_HOSTS = ['*']

    SECRET_KEY = values.SecretValue()

    # EMAIL = values.EmailURLValue()

    @classmethod
    def post_setup(cls):
        print('Using Staging config')
示例#6
0
class Email(object):
    """Email settings for SMTP."""

    EMAIL_HOST = values.Value('localhost')

    EMAIL_HOST_PASSWORD = values.SecretValue()

    EMAIL_HOST_USER = values.Value('*****@*****.**')

    EMAIL_PORT = values.IntegerValue(465)

    EMAIL_USE_SSL = values.BooleanValue(True)

    EMAIL_USE_TLS = values.BooleanValue(False)
示例#7
0
文件: email.py 项目: DebVortex/bureau
class Email(object):
    """Email settings for SMTP."""

    EMAIL_HOST = values.Value('localhost')

    EMAIL_HOST_PASSWORD = values.SecretValue()

    EMAIL_HOST_USER = values.Value('*****@*****.**')

    EMAIL_PORT = values.IntegerValue(465)

    EMAIL_USE_SSL = values.BooleanValue(True)

    EMAIL_USE_TLS = values.BooleanValue(False)
示例#8
0
class Prod(Common):
    """Configuration settings used in production."""

    # Ensure debug is always false in production
    DEBUG = False

    # Require that a `DJANGO_SECRET_KEY` environment
    # variable is set during production
    SECRET_KEY = values.SecretValue()

    # In production, use wildcard because load balancers
    # perform health checks without host specific Host header value
    ALLOWED_HOSTS = ['*']

    # Additional apps only used in production
    INSTALLED_APPS = Common.INSTALLED_APPS + [
        'raven.contrib.django.raven_compat'
    ]

    # JWT secret must be set as environment
    # variable when in production
    JWT_SECRET = values.SecretValue()

    # Ensure that the beta token is set
    BETA_TOKEN = values.SecretValue()

    # Use GoogleCloudStorage for uploads
    DEFAULT_FILE_STORAGE = 'lib.storage.CustomPublicGoogleCloudStorage'
    GS_PROJECT_ID = values.Value()
    GS_BUCKET_NAME = values.Value()

    # Use SendGrid for emails
    EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend'
    SENDGRID_API_KEY = values.SecretValue()

    # Use Sentry for error reporting
    RAVEN_CONFIG = {'dsn': values.Value(environ_name='SENTRY_DSN')}
示例#9
0
class StadeMixin(ConfigMixin):
    WSGI_APPLICATION = 'stade.wsgi.application'
    ROOT_URLCONF = 'stade.urls'

    BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

    @staticmethod
    def before_binding(configuration: ComposedConfiguration) -> None:
        # Install local apps first, to ensure any overridden resources are found first
        configuration.INSTALLED_APPS = [
            'stade.core.apps.CoreConfig',
            'stade.tracker.apps.TrackerConfig',
            # jazzmin overrides django.contrib.admin templates
            # jazzmin is broken as of Django 3.2, see https://github.com/farridav/django-jazzmin/issues/281  # noqa
            # 'jazzmin',
        ] + configuration.INSTALLED_APPS

        # Install additional apps
        configuration.INSTALLED_APPS += [
            'import_export',
            'markdownify',
            'rules.apps.AutodiscoverRulesConfig',
            's3_file_field',
        ]

        configuration.AUTHENTICATION_BACKENDS.insert(
            0, 'rules.permissions.ObjectPermissionBackend')

    JAZZMIN_SETTINGS = {'related_modal_active': True}
    SHELL_PLUS_IMPORTS = ['from stade.core.tasks import *']

    TIME_ZONE = 'America/New_York'

    # Celery
    # TODO: concurrency could be increased for non-memory intensive tasks
    CELERY_WORKER_CONCURRENCY = 1

    MARKDOWNIFY_BLEACH = False

    STADE_MAILCHIMP_API_URL = 'https://us17.api.mailchimp.com/'
    STADE_MAILCHIMP_API_KEY = values.SecretValue()
    STADE_MAILCHIMP_LIST_ID = 'aa0e7aa1b1'

    # TODO: is this needed?
    ACCOUNT_FORMS = {
        'signup': 'stade.core.forms.CustomSignupForm',
        'reset_password_from_key':
        'stade.core.forms.CustomResetPasswordKeyForm',
    }
class BaseAuthConfigurationMixin:
    """
    Basic Mixin class which all django projects using this library should include
    """

    MAFIASI_AUTH_APPS = ["django_auth_mafiasi"]
    "List of apps which need to be added to django's " \
    "`INSTALLED_APPS <https://docs.djangoproject.com/en/3.1/ref/settings/#installed-apps>`_"

    AUTH_GET_USER_FROM_ID_TOKEN_FUNCTION = "django_auth_mafiasi.auth.get_user_from_id_token"
    "Import path of a function which is used when a user object needs to be derived from an OpenId **ID token**"

    AUTH_GET_USER_FROM_ACCESS_TOKEN_FUNCTION = "django_auth_mafiasi.auth.get_user_from_access_token"
    "Import path of a function which is used when a user object needs to be derived from an OpenId **access token**"

    AUTH_USER_MODEL = "django_auth_mafiasi.MafiasiAuthModelUser"
    "See `django documentation <https://docs.djangoproject.com/en/3.1/ref/settings/#auth-user-model>`_." \
    "If you override this, your new model should inherit from MafiasiAuthModelUser"

    AUTH_SERVER = values.URLValue(default="https://identity.mafiasi.de/auth/realms/mafiasi")
    "OpenId Issuer. This defaults to our Mafiasi server but theoretically, any OpenId Issuer can be used"

    AUTH_CLIENT_ID = values.Value(environ_required=True)
    "OpenId client id\n\n" \
    "It needs to be manually retrieved from the OpenId server and uniquely identifies this application"

    AUTH_CLIENT_SECRET = values.SecretValue(environ_required=True)
    "OpenId client secret\n\n" \
    "It needs to be manually retrieved from the OpenId server and authenticates this application (not the user)"

    AUTH_SCOPE = values.ListValue(default=["openid"])
    "Scopes to request when logging a user in on the OpenId provider"

    AUTH_STAFF_GROUPS = values.ListValue(default=["Server-AG"])
    "Which groups are considered to be staff (have access to the admin panel)"

    AUTH_SUPERUSER_GROUPS = values.ListValue(default=["Server-AG"])
    "Which groups are considered to be superusers (have access to everything)"

    REST_FRAMEWORK_REQUIRED_SCOPES = values.ListValue(default=["openid"])
    "Scopes to which an access token needs to have access to in order to be allowed access the an API secured by the rest framework authenticator"

    LOGIN_REDIRECT_URL = "/"
    "Where to redirect a user after successful login"

    LOGOUT_REDIRECT_URL = "/"
    "Where to redirect a user after logout"

    LOGIN_URL = "django_auth_mafiasi:login"
示例#11
0
class Staging(BaseSettings):

    SECRET_KEY = values.SecretValue()

    # Security
    SESSION_COOKIE_SECURE = values.BooleanValue(True)
    SECURE_BROWSER_XSS_FILTER = values.BooleanValue(True)
    SECURE_CONTENT_TYPE_NOSNIFF = values.BooleanValue(True)
    SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(True)
    SECURE_HSTS_SECONDS = values.IntegerValue(31536000)
    SECURE_REDIRECT_EXEMPT = values.ListValue([])
    SECURE_SSL_HOST = values.Value(None)
    SECURE_SSL_REDIRECT = values.BooleanValue(True)
    SECURE_PROXY_SSL_HEADER = values.TupleValue(
        ('HTTP_X_FORWARDED_PROTO', 'https'))
示例#12
0
class Local(Common):

    # DEBUG
    DEBUG = values.BooleanValue(True)
    TEMPLATE_DEBUG = DEBUG
    # END DEBUG

    # INSTALLED_APPS
    INSTALLED_APPS = Common.INSTALLED_APPS
    # END INSTALLED_APPS

    # DATABASE CONFIGURATION
    # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
    # DATABASES = values.DatabaseURLValue('postgres://localhost/volunteerapp')
    DATABASE_PWD = values.SecretValue(environ_prefix="",
                                      environ_name="VOLAPP_DATABASE_PWD")

    DATABASES = values.DatabaseURLValue('postgres://*****:*****@127.0.0.1:5432/' + 'volunteerapp')
    # END DATABASE CONFIGURATION

    # Mail settings
    EMAIL_HOST = 'localhost'
    EMAIL_PORT = 1025
    EMAIL_BACKEND = values.Value(
        'django.core.mail.backends.console.EmailBackend')
    # End mail settings

    # django-debug-toolbar
    MIDDLEWARE_CLASSES = Common.MIDDLEWARE_CLASSES + (
        'debug_toolbar.middleware.DebugToolbarMiddleware', )
    INSTALLED_APPS += (
        'debug_toolbar',
        'django_extensions',
    )

    INTERNAL_IPS = (
        '127.0.0.1',
        '10.0.2.2',
    )

    DEBUG_TOOLBAR_CONFIG = {
        'DISABLE_PANELS': [
            'debug_toolbar.panels.redirects.RedirectsPanel',
        ],
        'SHOW_TEMPLATE_CONTEXT': True,
    }
示例#13
0
class Development(Base):
    DEBUG = values.BooleanValue(True)

    SECRET_KEY = values.SecretValue()

    POSTGRES_USER = os.environ.get('POSTGRES_USER', 'postgres')
    POSTGRES_PASSWORD = os.environ.get('POSTGRES_PASSWORD', '')
    DATABASE_HOST = os.environ.get('DATABASE_HOST', 'localhost')
    POSTGRES_DB = os.environ.get('POSTGRES_DB', 'postgres')

    DATABASE_URL = 'postgis://%s:%s@%s/%s' % (
        POSTGRES_USER, POSTGRES_PASSWORD, DATABASE_HOST, POSTGRES_DB
    )
    DATABASES = values.DatabaseURLValue(DATABASE_URL)

    ALLOWED_HOSTS = ['*']
示例#14
0
class Production(Common):
    DEBUG = False
    TEMPLATE_DEBUG = False
    SECRET_KEY = values.SecretValue(environ_prefix='ORE')
    # EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
    ADMINS = ((str(values.Value(
        'xxx', environ_prefix='ORE', environ_name='ADMIN_NAME')),
        str(values.Value(
            'xxx', environ_prefix='ORE', environ_name='ADMIN_EMAIL'))),)
    PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
    TEMPLATE_DIRS = (PROJECT_ROOT + '/templates',
                     PROJECT_ROOT + '/static-release/img')
    LOGGING = Common.LOGGING
    LOGGING['loggers']['django.request']['handlers'] = ['mail_admins']
    LOGGING['loggers']['ore']['handlers'] = ['console']
    FOOTER = values.Value('ORE Development Team', environ_prefix='ORE')
示例#15
0
class Staging(Base, Configuration):
    BITCORE_SERVER_TYPE = "sta"
    DEBUG = values.BooleanValue(True)
    BASE_DIR = Base.BASE_DIR
    SECRET_KEY = values.SecretValue()
    DOMAIN_NAME = os.getenv('DOMAIN_NAME')

    ALLOWED_HOSTS = [
        "127.0.0.1",
        "0.0.0.0",
        "localhost",
        "staging." + DOMAIN_NAME + ".local",
        DOMAIN_NAME + ".com"
    ]

    # WEBSOCKETS - DJANGO CHANNELS
    ASGI_APPLICATION = "config.routing.application"
    CHANNEL_LAYERS = {
        'default': {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": {
                "hosts": [("redis", 6379)],
            },
        }
    }

    # HAYSTACK CONFIGURATION
    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine',
            'URL': 'http://elasticsearch:9200/',
            'INDEX_NAME': 'haystack',
        },
    }

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': "postgres",
            'USER': "******",
            'PASSWORD': "******",
            'HOST': "postgres",
            'PORT': 5432
        }
    }
示例#16
0
class Production(Base):
    """Production environment settings

    You must define the DJANGO_ALLOWED_HOSTS and DJANGO_SECRET_KEY environment
    variables in Production configuration (and derived configurations):

    DJANGO_ALLOWED_HOSTS="foo.com,foo.fr"
    DJANGO_SECRET_KEY="your-secret-key"
    """

    # Security
    SECRET_KEY = values.SecretValue()
    ALLOWED_HOSTS = values.ListValue(None)
    CSRF_COOKIE_SECURE = True
    SECURE_BROWSER_XSS_FILTER = True
    SECURE_CONTENT_TYPE_NOSNIFF = True
    SESSION_COOKIE_SECURE = True

    # For static files in production, we want to use a backend that includes a hash in
    # the filename, that is calculated from the file content, so that browsers always
    # get the updated version of each file.
    STATICFILES_STORAGE = (
        "django.contrib.staticfiles.storage.ManifestStaticFilesStorage")

    # For more details about CMS_CACHE_DURATION, see :
    # http://docs.django-cms.org/en/latest/reference/configuration.html#cms-cache-durations
    CMS_CACHE_DURATIONS = values.DictValue({
        "menus": 3600,
        "content": 86400,
        "permissions": 86400
    })

    # By default, Django CMS sends cached responses with a
    # Cache-control: max-age value that reflects the server cache TTL
    # (CMS_CACHE_DURATIONS["content"])
    #
    # The thing is : we can invalidate a server side cache entry, but we cannot
    # invalidate our client browser cache entries. That's why we want to set a
    # long TTL on the server side, but a much lower TTL on the browser cache.
    #
    # This setting allows to define a maximum value for the max-age header
    # returned by Django CMS views.
    MAX_BROWSER_CACHE_TTL = 600
示例#17
0
class Stage(Common):
    DEBUG = True

    SECRET_KEY = values.SecretValue()

    EMAIL_HOST = values.Value('localhost')
    EMAIL_HOST_USER = values.Value()
    EMAIL_HOST_PASSWORD = values.Value()
    EMAIL_PORT = values.Value()
    EMAIL_USE_TLS = values.BooleanValue(False)

    Common.LOGGING['handlers']['sentry'] = { 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', }
    Common.LOGGING['loggers'] = {
            '': {
                'handlers': ['sentry'],
                'level': Common.LOG_LEVEL,
                'propagate': True,
            }
    }
示例#18
0
class _Security:
    """Configure security"""

    SECRET_KEY = values.SecretValue()

    # Use PBKDF2PasswordHasher that uses 4 times the default number of iterations
    PASSWORD_HASHERS = [
        'ctflex.hashers.PBKDF2PasswordHasher4',
        'django.contrib.auth.hashers.PBKDF2PasswordHasher'
    ]

    # Number of days that a password reset link is valid for
    PASSWORD_RESET_TIMEOUT_DAYS = 1

    # Request modern browsers to block suspected XSS attacks. Not to be relied upon.
    SECURE_BROWSER_XSS_FILTER = True

    # Prevent browsers from guessing content types (reducing security risk).
    SECURE_CONTENT_TYPE_NOSNIFF = True

    # Minimum password strength validation
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME':
            'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.MinimumLengthValidator',
            'OPTIONS': {
                'min_length': 10,
            }
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME':
            'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
示例#19
0
class Production(Common):

    # This ensures that Django will be able to detect a secure connection
    # properly on Heroku.
#    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    # INSTALLED_APPS
    INSTALLED_APPS = Common.INSTALLED_APPS
    # END INSTALLED_APPS

    # SECRET KEY
    SECRET_KEY = values.SecretValue()
    # END SECRET KEY

    # sentry
    RAVEN_CONFIG = values.DictValue()

    INSTALLED_APPS += ('raven.contrib.django.raven_compat', )
    # end sentry


    # 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.6/ref/settings/#allowed-hosts
    ALLOWED_HOSTS = ["*"]
    # END SITE CONFIGURATION

    INSTALLED_APPS += ("gunicorn", )
示例#20
0
class Production(Base):
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    DEBUG = False

    SECRET_KEY = values.SecretValue()

    ALLOWED_HOSTS = ['.kinesicband.com']

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': os.environ.get('DB_DEFAULT_NAME'),
            'HOST': os.environ.get('DB_DEFAULT_HOST'),
            'PORT': os.environ.get('DB_DEFAULT_PORT'),
            'USER': os.environ.get('DB_DEFAULT_USER'),
            'PASSWORD': os.environ.get('DB_DEFAULT_PASSWORD'),
        },
    }
示例#21
0
class Production(Common):
    @property
    def JWT_AUTH(self):
        return get_jwt_auth()

    DEBUG = False
    TEMPLATE_DEBUG = DEBUG

    PAGE_CACHE_SECONDS = values.IntegerValue(1)

    # TODO: n a real production server this should have a proper url
    ALLOWED_HOSTS = values.ListValue(['getfission.com'])

    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = values.SecretValue()

    # ########### Sentry configuration
    RAVEN_DSN = values.URLValue()

    RAVEN_CONFIG = {'dsn': os.environ.get('RAVEN_DSN')}
示例#22
0
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.6/ref/settings/#allowed-hosts
    ALLOWED_HOSTS = ["*"]
    # END SITE CONFIGURATION

    # 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

    # GA configuration
    GOOGLE_ANALYTICS_PROPERTY_ID = values.Value()
    GOOGLE_ANALYTICS_DOMAIN = values.Value()
示例#23
0
class Dev(BaseSettings):

    # .env file used to set environment variables locally during development
    DOTENV = join(BaseSettings.ROOT_DIR, '.env')

    SECRET_KEY = values.SecretValue()

    DEBUG = values.BooleanValue(True)

    DATABASES = values.DatabaseURLValue(
        'postgresql://*****:*****@localhost:15432/dev')

    INTERNAL_IPS = ['127.0.0.1']

    INSTALLED_APPS = BaseSettings.INSTALLED_APPS + [
        'debug_toolbar',
    ]

    MIDDLEWARE = BaseSettings.MIDDLEWARE + [
        'debug_toolbar.middleware.DebugToolbarMiddleware'
    ]
示例#24
0
class Production(Common):

    INSTALLED_APPS = Common.INSTALLED_APPS

    SECRET_KEY = values.SecretValue()

    GEOS_LIBRARY_PATH = values.Value('', environ_prefix=False)
    GDAL_LIBRARY_PATH = values.Value('', environ_prefix=False)
    PROJ4_LIBRARY_PATH = values.Value('', environ_prefix=False)

    ALLOWED_HOSTS = ['beta.tulsawebdevs.org', 'twd.destos.com']

    # django-secure
    # This ensures that Django will be able to detect a secure connection
    # properly on Heroku.
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    # Django secure disabled for now TODO, get ssl key for beta server
    # 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

    INSTALLED_APPS += ("gunicorn", )

    # Simplified static file serving.
    # https://warehouse.python.org/project/whitenoise/

    STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

    ADMINS = values.SingleNestedTupleValue()
示例#25
0
class Base(Configuration):

    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    INSTALLED_APPS = [
        "django.contrib.contenttypes",
        "probes",
    ]
    MIDDLEWARE = []
    ALLOWED_HOSTS = []

    SECRET_KEY = values.SecretValue()

    ROOT_URLCONF = "probe_search.urls"

    TEMPLATES = [
        {
            "BACKEND": "django.template.backends.django.DjangoTemplates",
            "DIRS": [],
            "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",
                ],
            },
        },
    ]

    DEBUG = values.BooleanValue(default=False)
    LANGUAGE_CODE = "en-us"
    TIME_ZONE = "UTC"
    USE_I18N = False
    USE_L10N = False
    USE_TZ = True
示例#26
0
class Development(Base, Configuration):
    DEBUG = values.BooleanValue(True)
    BASE_DIR = Base.BASE_DIR
    SECRET_KEY = values.SecretValue()
    ALLOWED_HOSTS = ["*"]

    # DJANGO CHANNELS
    ASGI_APPLICATION = "config.routing.application"
    CHANNEL_LAYERS = {
        'default': {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": {
                "hosts": [(os.getenv('REDIS_URL'), 6379)],
            },
        }
    }

    # HAYSTACK CONFIGURATION
    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE':
            'haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine',
            'URL': os.getenv('ELASTICSEARCH_URL'),
            'INDEX_NAME': 'haystack',
        },
    }

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': "postgres",
            'USER': "******",
            'PASSWORD': "******",
            'HOST': "0.0.0.0",
            'PORT': 5432
        }
    }
示例#27
0
class Prod(Common):
    """
    The in-production settings.
    """
    DEBUG = TEMPLATE_DEBUG = False

    SECRET_KEY = values.SecretValue()

    EMAIL_HOST = values.Value()
    EMAIL_HOST_USER = values.Value()
    EMAIL_HOST_PASSWORD = values.Value()
    EMAIL_PORT = values.Value()
    EMAIL_USE_TLS = values.BooleanValue(True)

    DSN_VALUE = values.Value()

    # If we're on production, connect to Sentry
    RAVEN_CONFIG = {
        'dsn': DSN_VALUE,
    }

    INSTALLED_APPS = Common.INSTALLED_APPS + (
        'raven.contrib.django.raven_compat', )
示例#28
0
class Production(BaseSettings):

    DEBUG = values.BooleanValue(False)
    ALLOWED_HOSTS = values.ListValue(
        ['*'], environ_prefix="{{cookiecutter.repo_name}}".upper())
    SECRET_KEY = values.SecretValue(
        environ_prefix="{{cookiecutter.repo_name}}".upper())
    DATABASES = values.DatabaseURLValue(
        'sqlite://dev.db',
        alias='default',
        environ_prefix="{{cookiecutter.repo_name}}".upper())
    CACHES = values.CacheURLValue(
        'locmem://',
        alias='default',
        environ_prefix="{{cookiecutter.repo_name}}".upper())

    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage'
    TEMPLATE_LOADERS = (
        #'django.template.loaders.cached.Loader',
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
示例#29
0
class Production(Base):
    DEBUG = values.BooleanValue(False)
    ALLOWED_HOSTS = values.ListValue(['wheels-o-tron.herokuapp.com'])
    DATABASES = values.DatabaseURLValue()
    SECRET_KEY = values.SecretValue()
    MIDDLEWARE = [
        'raven.contrib.django.raven_compat.middleware.SentryMiddleware',
    ] + Base.MIDDLEWARE

    # configure our sentry connection
    INSTALLED_APPS = Base.INSTALLED_APPS + [
        'raven.contrib.django.raven_compat'
    ]
    SENTRY_DSN = values.Value(None, environ_prefix=None)
    SENTRY_DSN_PUBLIC = values.Value(None, environ_prefix=None)

    @property
    def RAVEN_CONFIG(self):
        return {
            'dsn': self.SENTRY_DSN,
            'release': os.environ.get('HEROKU_SLUG_COMMIT'),
            # 'release': raven.fetch_git_sha(os.path.abspath(os.pardir)),
        }
class Staging(Base, Configuration):
    BITCORE_SERVER_TYPE = "sta"
    DEBUG = values.BooleanValue(True)
    BASE_DIR = Base.BASE_DIR
    SECRET_KEY = values.SecretValue()

    ALLOWED_HOSTS = [
        "127.0.0.1",
        "0.0.0.0",
        "localhost",
        "nuxtstaging.bitcoregaming.local",
        "nuxtstaging.bitcoregaming.com",
        "staging.bitcoregaming.com",
        "backendstaging"
    ]

    # WEBSOCKETS - DJANGO CHANNELS
    ASGI_APPLICATION = "config.routing.application"
    CHANNEL_LAYERS = {
        'default': {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": {
                "hosts": [("redis", 6379)],
            },
        }
    }

    # HAYSTACK CONFIGURATION
    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine',
            'URL': 'http://elasticsearch:9200/',
            'INDEX_NAME': 'haystack',
        },
    }