Files @ 9329cdbaf5a9
Branch filter:

Location: CopyleftConf/copyleftconf-website/pinaxcon/settings.py - annotation

Christopher Neugebauer
First pile of homepage cleanup
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
6c94eb9e91ee
6c94eb9e91ee
6c94eb9e91ee
6c94eb9e91ee
04f246d85071
04f246d85071
ce77ac6b5c69
5db3a22dbbaa
07e7a01209e9
07e7a01209e9
07e7a01209e9
07e7a01209e9
07e7a01209e9
76733b05472a
55a10b750b6a
04f246d85071
bb9ac9fd67cf
bb9ac9fd67cf
bb9ac9fd67cf
bb9ac9fd67cf
abbe05ee0e6a
db7110f07b95
db7110f07b95
db7110f07b95
d587e5c72916
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
f4ab6d687404
04f246d85071
a7c325921633
a7c325921633
a7c325921633
a7c325921633
7b9dd1e8b8af
a7c325921633
0a88ccce1810
0a88ccce1810
0a88ccce1810
0a88ccce1810
0a88ccce1810
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
7bbe064c0d2e
04f246d85071
04f246d85071
04f246d85071
7bbe064c0d2e
04f246d85071
04f246d85071
7bbe064c0d2e
7bbe064c0d2e
7bbe064c0d2e
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
7bbe064c0d2e
04f246d85071
04f246d85071
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
3d1a38f4c937
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
fa46fb07d648
fa46fb07d648
fa46fb07d648
fa46fb07d648
fa46fb07d648
fa46fb07d648
04f246d85071
04f246d85071
04f246d85071
04f246d85071
a3af1be7574c
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
a3af1be7574c
a3af1be7574c
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
0a88ccce1810
55a10b750b6a
5db3a22dbbaa
4a67271b94d9
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
c3c23f7129ba
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
6c94eb9e91ee
6c94eb9e91ee
869137a84a62
6c94eb9e91ee
da1ac265d27c
da1ac265d27c
b5c6e0e5edd5
da1ac265d27c
da1ac265d27c
6c94eb9e91ee
6c94eb9e91ee
6c94eb9e91ee
04f246d85071
04f246d85071
6c94eb9e91ee
6c94eb9e91ee
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
7bbe064c0d2e
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
98f2e3d932bf
a3af1be7574c
a3af1be7574c
a3af1be7574c
83ed42b0520e
a3af1be7574c
a3af1be7574c
7bbe064c0d2e
7bbe064c0d2e
139b9ea8d064
139b9ea8d064
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
7bbe064c0d2e
7bbe064c0d2e
7bbe064c0d2e
7bbe064c0d2e
04f246d85071
04f246d85071
04f246d85071
04f246d85071
214811430c07
04f246d85071
139b9ea8d064
139b9ea8d064
214811430c07
214811430c07
214811430c07
214811430c07
ce77ac6b5c69
ce77ac6b5c69
ce77ac6b5c69
a6cf86f82654
a6cf86f82654
214811430c07
214811430c07
ce77ac6b5c69
04f246d85071
0ba9c8e2da7e
0ba9c8e2da7e
091ac19f778f
04f246d85071
04f246d85071
04f246d85071
0487525f5c26
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
6c94eb9e91ee
da1ac265d27c
da1ac265d27c
c1b6a542e35a
c40b8cc02ddc
da1ac265d27c
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
c04af6caa5d8
c04af6caa5d8
c04af6caa5d8
c04af6caa5d8
c04af6caa5d8
e8e20dd6d399
fe2b5e738e3a
fe2b5e738e3a
fe2b5e738e3a
fe2b5e738e3a
fe2b5e738e3a
23e523d78c10
9a4c3f0e95db
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
a3af1be7574c
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
fe2b5e738e3a
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
e8e20dd6d399
25569c416d45
25569c416d45
25569c416d45
25569c416d45
16c0e2ada014
16c0e2ada014
16c0e2ada014
25569c416d45
25569c416d45
import os
import dj_database_url


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

DEBUG = bool(int(os.environ.get("DEBUG", "1")))

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(PROJECT_ROOT, "dev.db"),
    }
}

UNPREPEND_WWW = bool(int(os.environ.get("DJANGO_UNPREPEND_WWW", "0")))

# HEROKU: Update database configuration with $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)

ALLOWED_HOSTS = [".localhost", ".herokuapp.com", ".northbaypython.org", "127.0.0.1"]
CANONICAL_HOST = os.environ.get("DJANGO_CANONICAL_HOST", None)

# If DEFAULT_FROM_EMAIL is not set, email will most likely break in prod.
from_email = os.environ.get("DJANGO_DEFAULT_FROM_EMAIL", None)
if from_email is not None:
    DEFAULT_FROM_EMAIL = from_email
    SERVER_EMAIL = DEFAULT_FROM_EMAIL
    
THEME_CONTACT_EMAIL = os.environ.get("THEME_CONTACT_EMAIL", None)
    

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = os.environ.get("TZ", "America/Los_Angeles")


# Set the email address that will receive errors.
admin_email = os.environ.get("DJANGO_ADMIN_EMAIL", None)
if admin_email is not None:
    ADMINS = [("Webmaster", admin_email)]


# Use SSLRedirectMiddleware
SSL_ON = os.environ.get("DJANGO_SSL_ON", True)
SSL_ALWAYS = os.environ.get("DJANGO_SSL_ALWAYS", False)

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

SITE_ID = int(os.environ.get("SITE_ID", 1))

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = "/site_media/media/"

# Absolute path to the directory static files should be collected to.
# Don"t put anything in this directory yourself; store your static files
# in apps" "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = [
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "compressor.finders.CompressorFinder",
]


# Amazon S3 setup
DEFAULT_FILE_STORAGE = os.environ.get("DJANGO_DEFAULT_FILE_STORAGE", 'django.core.files.storage.FileSystemStorage') # noqa
AWS_ACCESS_KEY_ID = os.environ.get("DJANGO_AWS_ACCESS_KEY_ID", None)
AWS_SECRET_ACCESS_KEY = os.environ.get("DJANGO_AWS_SECRET_ACCESS_KEY", None)
AWS_STORAGE_BUCKET_NAME = os.environ.get("DJANGO_AWS_STORAGE_BUCKET_NAME", None)


# Make this unique, and don't share it with anybody.
SECRET_KEY = "6r&z0i#!k-thu4nv^zzx!f$fbp(&#2i5mq_^%%@ihu_qxxotl_"

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",
                "account.context_processors.account",
                "pinax_theme_bootstrap.context_processors.theme",
                "symposion.reviews.context_processors.reviews",
                "sekizai.context_processors.sekizai",
            ],
        },
    },
]

TEMPLATE_DEBUG = False

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",
    "reversion.middleware.RevisionMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "ssl_redirect.middleware.SSLRedirectMiddleware",
    "pinaxcon.middleware.CanonicalHostMiddleware",
    "pinaxcon.middleware.UnprependWWWMiddleware",
    "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",

    # theme
    "bootstrapform",
    "pinax_theme_bootstrap",

    # external
    "account",
    "easy_thumbnails",
    "taggit",
    "reversion",
    "metron",
    "sitetree",
    "pinax.boxes",
    "pinax.eventlog",
    "pinax.pages",
    "markdown_deux",

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

    # Registrasion
    "registrasion",
    "symposion_templates",

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

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

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

    #testing
    "django_nose",

    # wiki
    'django.contrib.humanize',
    'django_nyt',
    'mptt',
    'sekizai',
    #'sorl.thumbnail',
    'wiki',
    'wiki.plugins.attachments',
    'wiki.plugins.notifications',
    #'wiki.plugins.images',
    'wiki.plugins.macros',

    # stylesheets and js
    'compressor',

    'email_log',
]

# 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,
    "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"
        }
    },
    "loggers": {
        "django.request": {
            "handlers": ["mail_admins"],
            "level": "ERROR",
            "propagate": True,
        },
    }
}

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'django_libsass.SassCompiler'),
)

FIXTURE_DIRS = [
    os.path.join(PROJECT_ROOT, "fixtures"),
]

# Heroku: Get email configuration from environment variables.

EMAIL_BACKEND = "email_log.backends.EmailBackend"
EMAIL_LOG_BACKEND = os.environ.get("DJANGO_EMAIL_BACKEND", "django.core.mail.backends.console.EmailBackend")  # noqa
EMAIL_HOST = os.environ.get("DJANGO_EMAIL_HOST", "")
EMAIL_PORT = int(os.environ.get("DJANGO_EMAIL_PORT", 25))
EMAIL_HOST_USER = os.environ.get("DJANGO_EMAIL_HOST_USER", "")
EMAIL_HOST_PASSWORD = os.environ.get("DJANGO_EMAIL_HOST_PASSWORD", "")
EMAIL_USE_TLS = bool(int(os.environ.get("DJANGO_EMAIL_USE_TLS", "0")))
EMAIL_USE_SSL = bool(int(os.environ.get("DJANGO_EMAIL_USE_SSL", "0")))

ACCOUNT_LOGIN_URL = "nbpy_login"
LOGIN_URL = "nbpy_login"

# We need to explicitly switch on signups.
ACCOUNT_OPEN_SIGNUP = bool(int(os.environ.get("DJANGO_ACCOUNT_OPEN_SIGNUP", "0")))
ACCOUNT_EMAIL_UNIQUE = True
#ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False if DEBUG else True
ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False
ACCOUNT_LOGIN_REDIRECT_URL = "dashboard"
ACCOUNT_LOGOUT_REDIRECT_URL = "home"
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2
ACCOUNT_USE_AUTH_AUTHENTICATE = True
ACCOUNT_HOOKSET =  "pinaxcon.account_hooks.BetterAccountHookSet"

AUTHENTICATION_BACKENDS = [
    "symposion.teams.backends.TeamPermissionsBackend",
    "account.auth_backends.UsernameAuthenticationBackend",
]

CONFERENCE_ID = 1
PROPOSAL_FORMS = {
    "talk": "pinaxcon.proposals.forms.TalkProposalForm",
}
PINAX_PAGES_HOOKSET = "pinaxcon.hooks.PinaxPagesHookSet"
PINAX_BOXES_HOOKSET = "pinaxcon.hooks.PinaxBoxesHookSet"

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")
TUOKCEHC_BASE_URL = os.environ.get("TUOKCEHC_BASE_URL", None)
PINAX_STRIPE_SEND_EMAIL_RECEIPTS = False

SYMPOSION_SPEAKER_MODEL = "pinaxcon.proposals.models.ConferenceSpeaker"
SYMPOSION_SPEAKER_FORM = "pinaxcon.proposals.forms.ConferenceSpeakerForm"

# Registrasion Attendee profile model
ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile"
# Registrasion attendee profile form -- must act on ATTENDEE_PROFILE_FORM
# You only need to provide this if you're customising the form from the default
# ATTENDEE_PROFILE_FORM = "pinaxcon.registrasion.forms.ProfileForm"

# Ticket product category -- used to identify which products must be available
# in order to register.
TICKET_PRODUCT_CATEGORY = 1


INVOICE_CURRENCY = "USD"

WIKI_ACCOUNT_HANDLING = False
WIKI_ACCOUNT_SIGNUP_ALLOWED = False

WIKI_ANONYMOUS_WRITE = False
WIKI_ANONYMOUS_UPLOAD = False


# 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',
]

MARKDOWN_DEUX_STYLES = {
    "default": {
        "safe_mode": False,
        "extras": {
            "tables": 1,
        }
    },
}