diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py new file mode 100644 index 0000000000000000000000000000000000000000..b2d9a2cb85dfa3a4da491182b7325d912aa801ff --- /dev/null +++ b/pinaxcon/settings.py @@ -0,0 +1,214 @@ +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": dj_database_url.config(default="postgres://localhost/pinaxcon") +} + +ALLOWED_HOSTS = [ + os.environ.get("GONDOR_INSTANCE_DOMAIN"), + "conference.pinaxproject.com" +] + +# 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 = "UTC" + +# 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(PACKAGE_ROOT, "site_media", "static") + +# URL prefix for static files. +# Example: "http://media.lawrence.com/static/" +STATIC_URL = "/site_media/static/" + +# Additional locations of static files +STATICFILES_DIRS = [ + os.path.join(PROJECT_ROOT, "static", "dist"), +] + +# 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", +] + +# Make this unique, and don't share it with anybody. +SECRET_KEY = "6r&z0i#!k-thu4nv^zzx!f$fbp(i5mq_^%%@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.core.context_processors.debug", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "django.core.context_processors.static", + "django.core.context_processors.tz", + "django.core.context_processors.request", + "django.contrib.messages.context_processors.messages", + "account.context_processors.account", + "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", + "reversion.middleware.RevisionMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", +] + +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", + + # symposion + "symposion", + "symposion.conference", + "symposion.proposals", + "symposion.reviews", + "symposion.schedule", + "symposion.speakers", + "symposion.sponsorship", + "symposion.teams", + + # project + "pinaxcon", + "pinaxcon.proposals" +] + +# 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, + }, + } +} + +FIXTURE_DIRS = [ + os.path.join(PROJECT_ROOT, "fixtures"), +] + +EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" + +ACCOUNT_OPEN_SIGNUP = True +ACCOUNT_EMAIL_UNIQUE = True +ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False +ACCOUNT_LOGIN_REDIRECT_URL = "home" +ACCOUNT_LOGOUT_REDIRECT_URL = "home" +ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 +ACCOUNT_USE_AUTH_AUTHENTICATE = True + +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"