Files @ c6314ae230da
Branch filter:

Location: symposion_app/pinaxcon/settings.py - annotation

Sachi King
DJ 1.11 support has improved upstream

We can now force to released versions with 1.11 support.
04f246d85071
37a9b37499d8
37a9b37499d8
a239d12e2d8f
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
04f246d85071
cfbf547dd916
cfbf547dd916
cfbf547dd916
6c94eb9e91ee
04f246d85071
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
cfa9a60f1120
04f246d85071
ff16f71df6e8
ff16f71df6e8
ff16f71df6e8
ff16f71df6e8
ff16f71df6e8
ff16f71df6e8
ff16f71df6e8
cfa9a60f1120
04f246d85071
a239d12e2d8f
ff16f71df6e8
ff16f71df6e8
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
187d900d813d
1759a07630a8
04f246d85071
187d900d813d
187d900d813d
187d900d813d
187d900d813d
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
6557e2983b68
6557e2983b68
6557e2983b68
6557e2983b68
6557e2983b68
6557e2983b68
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
ac7228ec5030
04f246d85071
04f246d85071
2cdb554623e5
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
3a686ab1a82e
ac7228ec5030
8d68cca01f87
37a9b37499d8
37a9b37499d8
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
fdfe3c704550
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
6c94eb9e91ee
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
6c94eb9e91ee
39b556b7ac4f
a3474fd9cd4c
6c94eb9e91ee
04f246d85071
04f246d85071
6c94eb9e91ee
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
e8e20dd6d399
39b556b7ac4f
e8e20dd6d399
04f246d85071
04f246d85071
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
81272d53109f
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
ac7228ec5030
01c5292653cc
ac7228ec5030
42ebbd06a1ea
04f246d85071
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
a239d12e2d8f
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
04f246d85071
04f246d85071
42ebbd06a1ea
39b556b7ac4f
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
04f246d85071
04f246d85071
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
42ebbd06a1ea
04f246d85071
6fa996f18357
6fa996f18357
6fa996f18357
6fa996f18357
6fa996f18357
42ebbd06a1ea
42ebbd06a1ea
a239d12e2d8f
42ebbd06a1ea
42ebbd06a1ea
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
37a9b37499d8
37a9b37499d8
37a9b37499d8
04f246d85071
04f246d85071
37a9b37499d8
37a9b37499d8
37a9b37499d8
04f246d85071
04f246d85071
04f246d85071
4c458fd584d3
4c458fd584d3
57ed5e546b34
52d443790fdb
57ed5e546b34
57ed5e546b34
57ed5e546b34
57ed5e546b34
df808d52f3fc
35bb7102503c
35bb7102503c
35bb7102503c
b66db0a4a89b
04f246d85071
57ed5e546b34
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
a3474fd9cd4c
6c94eb9e91ee
e8e20dd6d399
6eef5efcfb3c
6eef5efcfb3c
6eef5efcfb3c
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
6b7618cc5420
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
cfa9a60f1120
cfa9a60f1120
37a9b37499d8
37a9b37499d8
cfa9a60f1120
37a9b37499d8
37a9b37499d8
cfa9a60f1120
37a9b37499d8
37a9b37499d8
cfa9a60f1120
cfa9a60f1120
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
37a9b37499d8
cfa9a60f1120
37a9b37499d8
cfa9a60f1120
cfa9a60f1120
37a9b37499d8
cfa9a60f1120
cfa9a60f1120
37a9b37499d8
cfa9a60f1120
cfa9a60f1120
37a9b37499d8
37a9b37499d8
d658f8fb7441
d658f8fb7441
d658f8fb7441
d658f8fb7441
import os
import saml2
import saml2.saml
from django.utils.crypto import get_random_string

PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
BASE_DIR = PACKAGE_ROOT


### USER SETTINGS

DEBUG = True
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(PROJECT_ROOT, "dev.db"),
    }
}
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
THEME_CONTACT_EMAIL = "team@lca2018.org"
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", get_random_string(length=64))


PINAX_STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "your test public key")
PINAX_STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "your test secret key")
PINAX_STRIPE_SEND_EMAIL_RECEIPTS = False

saml2_entityid = 'http://example.com/saml2/metadata/'
saml2_sp_name = 'Federated Django sample SP'
saml2_sp_assertion_service = 'http://example.com/saml2/acs/'
saml2_sp_slo_rdir = 'http://example.com/saml2/ls/'
smal2_sp_slo_post = 'http://example.com/saml2/ls/post'
saml2_base_dir = os.path.join(PACKAGE_ROOT, 'saml2')
saml2_idp_metadata = {
    'local': [os.path.join(saml2_base_dir, 'remote_metadata.xml')],
    },
saml2_signing_key = os.path.join(saml2_base_dir, 'cert.key')
saml2_signing_crt = os.path.join(saml2_base_dir, 'cert.pem')
saml2_encr_key = os.path.join(saml2_base_dir, 'enc.key')
saml2_encr_crt = os.path.join(saml2_base_dir, 'enc.crt')
saml2_contact = [
    {'given_name': os.environ.get("META_GIVEN_NAME", 'Bastard'),
     'sur_name': os.environ.get('META_FAM_NAME', 'Operator'),
     'company': os.environ.get('META_COMPANY', 'Corp1'),
     'email_address': os.environ.get('META_EMAIL', 'op@example.com'),
     'contact_type': 'technical'},
    ],


### Standard settings

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


ALLOWED_HOSTS = ['lca2018.org', '127.0.0.1', 'localhost']

TIME_ZONE = "Australia/Sydney"
DATE_FORMAT = "j F Y"
LANGUAGE_CODE = "en-au"

SITE_ID = int(os.environ.get("SITE_ID", 1))
USE_I18N = True
USE_L10N = True
USE_TZ = True

MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media")
MEDIA_URL = "/site_media/media/"

STATIC_ROOT = os.path.join(PROJECT_ROOT, "static", "distx")
STATIC_URL = "/static/dist/"

STATICFILES_DIRS = [
    os.path.join(PROJECT_ROOT, "static", "dist"),
]

STATICFILES_FINDERS = [
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
]

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [
            os.path.join(PACKAGE_ROOT, "templates"),
        ],
        "APP_DIRS": True,
        "OPTIONS": {
            "debug": DEBUG,
            "context_processors": [
                "django.contrib.auth.context_processors.auth",
                "django.template.context_processors.debug",
                "django.template.context_processors.i18n",
                "django.template.context_processors.media",
                "django.template.context_processors.static",
                "django.template.context_processors.tz",
                "django.template.context_processors.request",
                "django.contrib.messages.context_processors.messages",
                "pinax_theme_bootstrap.context_processors.theme",
                "symposion.reviews.context_processors.reviews",
            ],
        },
    },
]

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",
    "debug_toolbar.middleware.DebugToolbarMiddleware",
    "reversion.middleware.RevisionMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    'pinaxcon.monkey_patch.MonkeyPatchMiddleware',
]

ROOT_URLCONF = "pinaxcon.urls"

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = "pinaxcon.wsgi.application"

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.messages",
    "django.contrib.sessions",
    "django.contrib.sites",
    "django.contrib.staticfiles",
    "django.contrib.humanize",
    "debug_toolbar",

    'djangosaml2',

    # theme
    "bootstrapform",
    "pinax_theme_bootstrap",

    # external
    "easy_thumbnails",
    "taggit",
    "reversion",
    "metron",
    "sitetree",
    "pinax.eventlog",

    # symposion
    "symposion",
    "symposion.conference",
    "symposion.proposals",
    "symposion.reviews",
    "symposion.schedule",
    "symposion.speakers",
    "symposion.teams",

    # Registrasion
    "registrasion",

    # Registrasion-stipe
    "pinax.stripe",
    "django_countries",
    "registripe",

    # admin - required by registrasion ??
    "nested_admin",

    # project
    "pinaxcon",
    "pinaxcon.proposals",
    "pinaxcon.registrasion",
    "jquery",
    "djangoformsetjs",

    # testing
    "django_nose",
]

DEBUG_TOOLBAR_PANELS = [
    'debug_toolbar.panels.versions.VersionsPanel',
    'debug_toolbar.panels.timer.TimerPanel',
    'debug_toolbar.panels.settings.SettingsPanel',
    'debug_toolbar.panels.headers.HeadersPanel',
    'debug_toolbar.panels.request.RequestPanel',
    'debug_toolbar.panels.sql.SQLPanel',
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
    'debug_toolbar.panels.cache.CachePanel',
    'debug_toolbar.panels.signals.SignalsPanel',
    'debug_toolbar.panels.logging.LoggingPanel',
    'debug_toolbar.panels.redirects.RedirectsPanel',
]

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS': False,
    'SHOW_TOOLBAR_CALLBACK': lambda x: DEBUG,
}

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(asctime)s %(levelname)s $(module)s %(message)s'
        },
    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'symposion.request': {
            'handlers': ['mail_admins'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'DEBUG'
    },
}
FIXTURE_DIRS = [
    os.path.join(PROJECT_ROOT, "fixtures"),
]

AUTHENTICATION_BACKENDS = [
    'symposion.teams.backends.TeamPermissionsBackend',
    'django.contrib.auth.backends.ModelBackend',
    'djangosaml2.backends.Saml2Backend',
]

LOGIN_URL = '/saml2/login/'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

CONFERENCE_ID = 1
PROPOSAL_FORMS = {
    "talk": "pinaxcon.proposals.forms.TalkProposalForm",
    "tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
    "miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
    "sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm",
    "openradio-miniconf": "pinaxcon.proposals.forms.RadioProposalForm",
    "wootconf-miniconf": "pinaxcon.proposals.forms.WootconfProposalForm",
    "writethedocs-miniconf": "pinaxcon.proposals.forms.WriteTheDocsProposalForm",
    "security-miniconf": "pinaxcon.proposals.forms.SecurityProposalForm",
    "kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
    "games-miniconf": "pinaxcon.proposals.forms.GamesProposalForm",
    "testing-miniconf": "pinaxcon.proposals.forms.TestingProposalForm",
    "knowledge-miniconf": "pinaxcon.proposals.forms.KnowledgeProposalForm",
    "lawpolicy-miniconf": "pinaxcon.proposals.forms.LawProposalForm",
    "openhardware-miniconf": "pinaxcon.proposals.forms.OpenHardwareProposalForm",
}

# Registrasion bits:
ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile"
ATTENDEE_PROFILE_FORM = "pinaxcon.registrasion.forms.ProfileForm"
INVOICE_CURRENCY = "AUD"

ATTENDEE_PROFILE_FORM = "pinaxcon.registrasion.forms.ProfileForm"

# CSRF custom error screen
CSRF_FAILURE_VIEW = "pinaxcon.csrf_view.csrf_failure"

# Use nose to run all tests
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

# Tell nose to measure coverage on the 'foo' and 'bar' apps
NOSE_ARGS = [
    '--with-coverage',
    '--cover-package=registrasion.controllers,registrasion.models',
]

SAML_ATTRIBUTE_MAPPING = {
    'uid': ('username', ),
    'mail': ('email', ),
    'givenName': ('first_name', ),
    'sn': ('last_name', ),
}
SAML_CONFIG = {
    'xmlsec_binary': '/usr/bin/xmlsec1',
    'entityid': saml2_entityid,
    'attribute_map_dir': os.path.join(PACKAGE_ROOT, 'saml2/attribute-maps'),
    'service': {
        'sp': {
            'name': saml2_sp_name,
            'endpoints': {
                'assertion_consumer_service': [
                    saml2_sp_assertion_service,
                    ],
                'single_logout_service': [
                    (saml2_sp_slo_rdir, saml2.BINDING_HTTP_REDIRECT),
                    (smal2_sp_slo_post, saml2.BINDING_HTTP_POST),
                    ],
                },
            'logout_requests_signed': True,
            'required_attributes': ['uid', 'mail', 'givenName', 'sn'],
            },
        },
    'metadata': saml2_idp_metadata,
    'debug': 1,
    'key_file': saml2_signing_key,
    'cert_file': saml2_signing_crt,
    'encryption_keypairs': [{
        'key_file': saml2_encr_key,
        'cert_file': saml2_encr_crt,
    }],
    'contact_person': saml2_contact,
    'valid_for': 10,
}

DEFAULT_FILE_STORAGE = 'gapc_storage.storage.GoogleCloudStorage'
GAPC_STORAGE = {
    'num_retries': 2,
}