annotate gpp/settings.py @ 322:c3d3d7114749

Fix #148; Django now requires AJAX posts to present the CSRF token. Added code suggested by Django docs to shoutbox.js. Since shoutbox.js is on every page, it should cover all cases.
author Brian Neal <bgneal@gmail.com>
date Sat, 12 Feb 2011 21:37:17 +0000
parents c550933ff5b6
children 0c18dfb1da1c
rev   line source
gremmie@1 1 # Django settings for gpp project.
gremmie@1 2
gremmie@1 3 import os
gremmie@1 4 import platform
bgneal@38 5 from decimal import Decimal
bgneal@38 6
gremmie@1 7 import local_settings
bgneal@35 8
gremmie@1 9 project_path = os.path.abspath(os.path.split(__file__)[0])
gremmie@1 10
gremmie@1 11 DEBUG = local_settings.DEBUG
gremmie@1 12 TEMPLATE_DEBUG = DEBUG
gremmie@1 13
gremmie@1 14 ADMINS = (
gremmie@1 15 ('Brian Neal', 'admin@surfguitar101.com'),
gremmie@1 16 )
gremmie@1 17
gremmie@1 18 AUTH_PROFILE_MODULE = 'bio.userprofile'
gremmie@1 19
gremmie@1 20 MANAGERS = ADMINS
gremmie@1 21
bgneal@173 22 DATABASES = local_settings.DATABASES
gremmie@1 23
gremmie@1 24 INTERNAL_IPS = local_settings.INTERNAL_IPS
gremmie@1 25
gremmie@1 26 # Local time zone for this installation. Choices can be found here:
gremmie@1 27 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
gremmie@1 28 # although not all choices may be available on all operating systems.
gremmie@1 29 # If running in a Windows environment this must be set to the same as your
gremmie@1 30 # system time zone.
gremmie@1 31 TIME_ZONE = local_settings.TIME_ZONE
gremmie@1 32
gremmie@1 33 # Language code for this installation. All choices can be found here:
gremmie@1 34 # http://www.i18nguy.com/unicode/language-identifiers.html
gremmie@1 35 LANGUAGE_CODE = 'en-us'
gremmie@1 36
gremmie@1 37 SITE_ID = local_settings.SITE_ID
gremmie@1 38
gremmie@1 39 # If you set this to False, Django will make some optimizations so as not
gremmie@1 40 # to load the internationalization machinery.
gremmie@1 41 USE_I18N = False
gremmie@1 42
gremmie@1 43 # Absolute path to the directory that holds media.
gremmie@1 44 # Example: "/home/media/media.lawrence.com/"
gremmie@1 45 MEDIA_ROOT = local_settings.MEDIA_ROOT
gremmie@1 46
gremmie@1 47 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
gremmie@1 48 # trailing slash if there is a path component (optional in other cases).
gremmie@1 49 # Examples: "http://media.lawrence.com", "http://example.com/media/"
gremmie@1 50 MEDIA_URL = local_settings.MEDIA_URL
gremmie@1 51
gremmie@1 52 # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
gremmie@1 53 # trailing slash.
gremmie@1 54 # Examples: "http://foo.com/media/", "/media/".
gremmie@1 55 ADMIN_MEDIA_PREFIX = local_settings.ADMIN_MEDIA_PREFIX
gremmie@1 56
bgneal@312 57 # Staticfiles settings:
bgneal@312 58 STATICFILES_DIRS = local_settings.STATICFILES_DIRS
bgneal@312 59 STATIC_ROOT = local_settings.STATIC_ROOT
bgneal@312 60 STATIC_URL = local_settings.STATIC_URL
bgneal@312 61
gremmie@1 62 # Make this unique, and don't share it with anybody.
gremmie@1 63 SECRET_KEY = local_settings.SECRET_KEY
gremmie@1 64
bgneal@174 65 # List of Loader classes that know how to import templates from various sources.
bgneal@181 66
bgneal@181 67 if DEBUG:
bgneal@181 68 TEMPLATE_LOADERS = (
bgneal@174 69 'django.template.loaders.filesystem.Loader',
bgneal@178 70 'django.template.loaders.app_directories.Loader',
bgneal@181 71 )
bgneal@181 72 else:
bgneal@181 73 TEMPLATE_LOADERS = (
bgneal@181 74 ('django.template.loaders.cached.Loader', (
bgneal@181 75 'django.template.loaders.filesystem.Loader',
bgneal@181 76 'django.template.loaders.app_directories.Loader',
bgneal@181 77 )),
bgneal@181 78 )
gremmie@1 79
bgneal@188 80 if DEBUG:
bgneal@188 81 MIDDLEWARE_CLASSES = (
bgneal@188 82 'django.middleware.common.CommonMiddleware',
bgneal@194 83 'django.middleware.csrf.CsrfViewMiddleware',
bgneal@188 84 'django.contrib.sessions.middleware.SessionMiddleware',
bgneal@188 85 'django.contrib.messages.middleware.MessageMiddleware',
bgneal@318 86 'debug_toolbar.middleware.DebugToolbarMiddleware',
bgneal@188 87 'django.contrib.auth.middleware.AuthenticationMiddleware',
bgneal@215 88 'gpp.core.middleware.InactiveUserMiddleware',
bgneal@227 89 'gpp.core.middleware.WhosOnline',
bgneal@188 90 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
bgneal@188 91 )
bgneal@188 92 else:
bgneal@188 93 MIDDLEWARE_CLASSES = (
bgneal@188 94 'django.middleware.common.CommonMiddleware',
bgneal@194 95 'django.middleware.csrf.CsrfViewMiddleware',
bgneal@188 96 'django.contrib.sessions.middleware.SessionMiddleware',
bgneal@188 97 'django.contrib.messages.middleware.MessageMiddleware',
bgneal@188 98 'django.contrib.auth.middleware.AuthenticationMiddleware',
bgneal@215 99 'gpp.core.middleware.InactiveUserMiddleware',
bgneal@227 100 'gpp.core.middleware.WhosOnline',
bgneal@188 101 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
bgneal@188 102 )
gremmie@1 103
gremmie@1 104 ROOT_URLCONF = 'gpp.urls'
gremmie@1 105
gremmie@1 106 TEMPLATE_DIRS = (
gremmie@1 107 # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
gremmie@1 108 # Always use forward slashes, even on Windows.
gremmie@1 109 # Don't forget to use absolute paths, not relative paths.
gremmie@1 110 os.path.join(project_path, 'templates'),
gremmie@1 111 )
gremmie@1 112
gremmie@1 113 TEMPLATE_CONTEXT_PROCESSORS = (
bgneal@178 114 "django.contrib.auth.context_processors.auth",
bgneal@178 115 "django.core.context_processors.debug",
bgneal@178 116 "django.core.context_processors.request",
bgneal@178 117 "django.core.context_processors.media",
bgneal@312 118 "django.core.context_processors.static",
bgneal@178 119 "django.contrib.messages.context_processors.messages",
gremmie@1 120 )
gremmie@1 121
bgneal@188 122 INSTALLED_APPS = [
gremmie@1 123 'django.contrib.admin',
gremmie@1 124 'django.contrib.admindocs',
gremmie@1 125 'django.contrib.auth',
gremmie@1 126 'django.contrib.contenttypes',
bgneal@178 127 'django.contrib.flatpages',
bgneal@28 128 'django.contrib.humanize',
bgneal@178 129 'django.contrib.markup',
bgneal@178 130 'django.contrib.messages',
gremmie@1 131 'django.contrib.sessions',
gremmie@1 132 'django.contrib.sites',
bgneal@312 133 'django.contrib.staticfiles',
bgneal@29 134 'elsewhere',
gremmie@1 135 'tagging',
bgneal@219 136 'haystack',
gremmie@1 137 'accounts',
bgneal@214 138 'antispam',
gremmie@1 139 'bio',
gremmie@1 140 'bulletins',
gremmie@1 141 'comments',
gremmie@1 142 'contact',
gremmie@1 143 'core',
bgneal@33 144 'donations',
gremmie@1 145 'downloads',
bgneal@75 146 'forums',
gremmie@1 147 'gcalendar',
gremmie@1 148 'irc',
bgneal@290 149 'legacy',
bgneal@180 150 'mailer',
gremmie@1 151 'membermap',
gremmie@1 152 'messages',
gremmie@1 153 'news',
bgneal@285 154 'oembed',
gremmie@1 155 'podcast',
gremmie@1 156 'polls',
gremmie@1 157 'potd',
gremmie@1 158 'shoutbox',
gremmie@1 159 'smiley',
gremmie@1 160 'weblinks',
bgneal@188 161 ]
bgneal@318 162 if DEBUG:
bgneal@318 163 INSTALLED_APPS.append('debug_toolbar')
gremmie@1 164
gremmie@1 165 LOGIN_URL = '/accounts/login/'
gremmie@1 166 LOGIN_REDIRECT_URL = '/profile/me/'
gremmie@1 167 LOGOUT_URL = '/accounts/logout/'
gremmie@1 168
bgneal@57 169 FILE_UPLOAD_PERMISSIONS = 0644
bgneal@80 170 DEFAULT_FROM_EMAIL = ADMINS[0][1]
gremmie@1 171
gremmie@1 172 #######################################################################
bgneal@178 173 # Messages
bgneal@178 174 #######################################################################
bgneal@178 175 MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
bgneal@178 176
bgneal@178 177 #######################################################################
bgneal@180 178 # Email
bgneal@180 179 #######################################################################
bgneal@180 180 EMAIL_HOST = local_settings.EMAIL_HOST
bgneal@180 181 EMAIL_PORT = local_settings.EMAIL_PORT
bgneal@180 182
bgneal@180 183 #######################################################################
bgneal@43 184 # Caching
bgneal@43 185 #######################################################################
bgneal@43 186 if local_settings.USE_CACHE:
bgneal@309 187 CACHES = local_settings.CACHES
bgneal@309 188 CACHE_MIDDLEWARE_ANONYMOUS_ONLY = local_settings.CACHE_MIDDLEWARE_ANONYMOUS_ONLY
bgneal@248 189 CACHE_MIDDLEWARE_SECONDS = local_settings.CACHE_MIDDLEWARE_SECONDS
bgneal@248 190 CACHE_MIDDLEWARE_KEY_PREFIX = local_settings.CACHE_MIDDLEWARE_KEY_PREFIX
bgneal@43 191
bgneal@43 192 #######################################################################
bgneal@189 193 # Sessions
bgneal@189 194 #######################################################################
bgneal@189 195 SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
bgneal@189 196 SESSION_COOKIE_AGE = 2 * 7 * 24 * 60 * 60 # 2 weeks in seconds
bgneal@189 197 SESSION_COOKIE_DOMAIN = None
bgneal@189 198 SESSION_COOKIE_NAME = 'sg101_sessionid'
bgneal@189 199 SESSION_COOKIE_PATH = '/'
bgneal@189 200 SESSION_COOKIE_SECURE = False
bgneal@189 201 SESSION_EXPIRE_AT_BROWSER_CLOSE = False
bgneal@189 202 SESSION_SAVE_EVERY_REQUEST = False
bgneal@189 203
bgneal@189 204 #######################################################################
gremmie@1 205 # Tagging Specific Settings
gremmie@1 206 #######################################################################
gremmie@1 207 FORCE_LOWERCASE_TAGS = True
gremmie@1 208 MAX_TAG_LENGTH = 50
gremmie@1 209
gremmie@1 210 #######################################################################
bgneal@219 211 # Haystack Search Settings
bgneal@219 212 #######################################################################
bgneal@219 213 HAYSTACK_SITECONF = 'gpp.search_sites'
bgneal@219 214 HAYSTACK_SEARCH_ENGINE = 'xapian'
bgneal@219 215 HAYSTACK_XAPIAN_PATH = os.path.join(project_path, 'xapian_index')
bgneal@219 216
bgneal@219 217
bgneal@219 218 #######################################################################
gremmie@1 219 # GPP Specific Settings
gremmie@1 220 #######################################################################
gremmie@1 221 GPP_LOG_LEVEL = 0
bgneal@180 222 GPP_SEND_EMAIL = local_settings.GPP_SEND_EMAIL # see MAILER_ENQUEUE_MAIL
gremmie@1 223 GPP_NO_REPLY_EMAIL = 'no_reply'
gremmie@1 224 AVATAR_DIR = 'avatars'
gremmie@1 225 MAX_AVATAR_SIZE_BYTES = 2 * 1024 * 1024
gremmie@1 226 MAX_AVATAR_SIZE_PIXELS = 100
gremmie@1 227 AVATAR_DEFAULT_URL = MEDIA_URL + AVATAR_DIR + '/default.png'
bgneal@36 228
bgneal@36 229 # Donations application settings:
bgneal@66 230 DONATIONS_DEBUG = local_settings.DONATIONS_DEBUG
bgneal@35 231 DONATIONS_ITEM_NAME = 'Donation for SurfGuitar101.com'
bgneal@35 232 DONATIONS_BUSINESS = 'brian@surfguitar101.com'
bgneal@62 233 DONATIONS_BUSINESS_DEBUG = local_settings.DONATIONS_BUSINESS_DEBUG
bgneal@59 234 DONATIONS_GOAL = Decimal('100.00') # monthly goal
bgneal@35 235 DONATIONS_ANON_NAME = u'Anonymous'
bgneal@60 236 DONATIONS_ITEM_NUM = '500' # donation w/name listed
bgneal@60 237 DONATIONS_ITEM_ANON_NUM = '501' # donation listed as anonymous
bgneal@6 238
bgneal@180 239 # If MAILER_ENQUEUE_MAIL is True, all emails will be stored in the
bgneal@180 240 # mailer application's mail queue (database table). It is then expected
bgneal@180 241 # that a daemon or cron job will actually send the mail out. If
bgneal@180 242 # MAILER_ENQUEUE_MAIL is False, then email will only be sent if
bgneal@180 243 # the setting GPP_SEND_EMAIL (above) is True. In any event, emails
bgneal@180 244 # will be logged via the Python logger if the Python logger filter
bgneal@180 245 # DEBUG is active.
bgneal@180 246
bgneal@180 247 MAILER_ENQUEUE_MAIL = True
bgneal@180 248
bgneal@38 249 #######################################################################
bgneal@38 250 # Configure Logging
bgneal@38 251 #######################################################################
bgneal@38 252
bgneal@316 253 LOGGING = local_settings.LOGGING
bgneal@38 254
bgneal@206 255 #######################################################################
bgneal@206 256 # Django Debug Toolbar
bgneal@206 257 #######################################################################
bgneal@206 258
bgneal@206 259 if DEBUG:
bgneal@206 260 DEBUG_TOOLBAR_CONFIG = local_settings.DEBUG_TOOLBAR_CONFIG
bgneal@38 261
bgneal@38 262 #######################################################################
bgneal@6 263 # URL's of 3rd party Javascript and CSS files.
bgneal@6 264 # These dictionaries are used by core/templatetags/script_tags, and
bgneal@6 265 # should also be used by developers when creating form media classes.
bgneal@6 266 GPP_THIRD_PARTY_JS = {
bgneal@6 267 'jquery': (
bgneal@184 268 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js',
bgneal@6 269 ),
bgneal@6 270 'jquery-jeditable': (
bgneal@6 271 'js/jquery.jeditable.mini.js',
bgneal@6 272 ),
bgneal@6 273 'jquery-ui': (
bgneal@246 274 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js',
bgneal@6 275 ),
bgneal@6 276 'markitup': (
bgneal@6 277 'js/markitup/jquery.markitup.pack.js',
bgneal@6 278 'js/markitup/sets/markdown/set.js',
bgneal@6 279 ),
bgneal@7 280 'tiny_mce': (
bgneal@7 281 'js/tiny_mce/tiny_mce.js',
bgneal@7 282 'js/tiny_mce_init_std.js',
bgneal@7 283 ),
bgneal@6 284 }
bgneal@6 285 GPP_THIRD_PARTY_CSS = {
bgneal@6 286 'jquery-ui': (
bgneal@246 287 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/redmond/jquery-ui.css',
bgneal@6 288 ),
bgneal@6 289 'markitup': (
bgneal@6 290 'js/markitup/skins/markitup/style.css',
bgneal@6 291 'js/markitup/sets/markdown/style.css',
bgneal@6 292 ),
bgneal@6 293 }
bgneal@6 294