3 # Copyright (C) 2012 FinalsClub Foundation
4 """ Common settings and globals. """
7 from datetime import timedelta
8 from os.path import abspath, basename, dirname, join, normpath
11 from djcelery import setup_loader
14 ########## PATH CONFIGURATION
15 # Absolute filesystem path to the Django project directory:
16 DJANGO_ROOT = dirname(dirname(abspath(__file__)))
18 # Absolute filesystem path to the top-level project folder:
19 SITE_ROOT = dirname(DJANGO_ROOT)
22 SITE_NAME = basename(DJANGO_ROOT)
24 # Add our project to our pythonpath, this way we don't need to type our project
25 # name in our dotted import paths:
26 path.append(DJANGO_ROOT)
27 ########## END PATH CONFIGURATION
30 ########## DEBUG CONFIGURATION
31 # See: https://docs.djangoproject.com/en/dev/ref/settings/#debug
34 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-debug
35 TEMPLATE_DEBUG = DEBUG
36 ########## END DEBUG CONFIGURATION
39 ########## MANAGER CONFIGURATION
40 # See: https://docs.djangoproject.com/en/dev/ref/settings/#admins
42 ('Seth Woodworth', 'seth@finalsclub.org'),
43 ('Charles Holbrow', 'charles@finalsclub.org'),
44 ('Andrew Magliozzi', 'andrew@finalsclub.org'),
47 # See: https://docs.djangoproject.com/en/dev/ref/settings/#managers
49 ########## END MANAGER CONFIGURATION
52 ########## DATABASE CONFIGURATION
53 # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
56 'ENGINE': 'django.db.backends.',
64 ########## END DATABASE CONFIGURATION
67 ########## GENERAL CONFIGURATION
68 # See: https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
69 TIME_ZONE = 'America/New_York'
71 # See: https://docs.djangoproject.com/en/dev/ref/settings/#language-code
72 LANGUAGE_CODE = 'en-us'
74 # See: https://docs.djangoproject.com/en/dev/ref/settings/#site-id
77 # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n
80 # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-l10n
82 ########## END GENERAL CONFIGURATION
85 ########## MEDIA CONFIGURATION
86 # See: https://docs.djangoproject.com/en/dev/ref/settings/#media-root
87 MEDIA_ROOT = normpath(join(DJANGO_ROOT, 'media'))
89 # See: https://docs.djangoproject.com/en/dev/ref/settings/#media-url
91 ########## END MEDIA CONFIGURATION
94 ########## STATIC FILE CONFIGURATION
96 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
98 normpath(join(DJANGO_ROOT, 'assets')),
101 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders
102 STATICFILES_FINDERS = (
103 'django.contrib.staticfiles.finders.FileSystemFinder',
104 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
105 'compressor.finders.CompressorFinder',
107 ########## END STATIC FILE CONFIGURATION
110 ########## SECRET CONFIGURATION
111 # See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
112 SECRET_KEY = r"(s1k!&^7l28k&nrm2ek(qqo&19%y(zn#=^zq_*ur2@irjun0x4"
113 ########## END SECRET CONFIGURATION
116 ########## FIXTURE CONFIGURATION
117 # See: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-FIXTURE_DIRS
119 normpath(join(DJANGO_ROOT, 'fixtures')),
121 ########## END FIXTURE CONFIGURATION
124 ########## TEMPLATE CONFIGURATION
125 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors
126 TEMPLATE_CONTEXT_PROCESSORS = (
127 'django.contrib.auth.context_processors.auth',
128 'django.core.context_processors.debug',
129 'django.core.context_processors.i18n',
130 'django.core.context_processors.media',
131 'django.core.context_processors.static',
132 'django.core.context_processors.tz',
133 'django.contrib.messages.context_processors.messages',
134 'django.core.context_processors.request',
137 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-loaders
139 'django.template.loaders.filesystem.Loader',
140 'django.template.loaders.app_directories.Loader',
143 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs
145 normpath(join(DJANGO_ROOT, 'templates')),
147 ########## END TEMPLATE CONFIGURATION
150 ########## MIDDLEWARE CONFIGURATION
151 # See: https://docs.djangoproject.com/en/dev/ref/settings/#middleware-classes
152 MIDDLEWARE_CLASSES = (
153 # Use GZip compression to reduce bandwidth.
154 'django.middleware.gzip.GZipMiddleware',
156 # Default Django middleware.
157 'django.middleware.common.CommonMiddleware',
158 'django.contrib.sessions.middleware.SessionMiddleware',
159 'django.middleware.csrf.CsrfViewMiddleware',
160 'django.contrib.auth.middleware.AuthenticationMiddleware',
161 'django.contrib.messages.middleware.MessageMiddleware',
163 ########## END MIDDLEWARE CONFIGURATION
166 ########## URL CONFIGURATION
167 # See: https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf
168 ROOT_URLCONF = '%s.urls' % SITE_NAME
169 ########## END URL CONFIGURATION
172 ########## APP CONFIGURATION
174 # Default Django apps:
175 'django.contrib.auth',
176 'django.contrib.contenttypes',
177 'django.contrib.sessions',
178 'django.contrib.sites',
179 'django.contrib.messages',
180 'django.contrib.staticfiles',
182 # Useful template tags:
183 'django.contrib.humanize',
185 # grappelli django-admin improvment, must be added before admin
188 # Admin panel and documentation:
189 'django.contrib.admin',
190 'django.contrib.admindocs',
194 # Database migration helpers:
197 # Static file management:
200 # Asynchronous task queue:
203 # Tagging https://github.com/yedpodtrzitko/django-taggit
209 'karmaworld.apps.notes',
210 'karmaworld.apps.courses',
211 'karmaworld.apps.ajaxuploader',
214 # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
215 INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
216 ########## END APP CONFIGURATION
219 ########## LOGGING CONFIGURATION
220 # See: https://docs.djangoproject.com/en/dev/ref/settings/#logging
223 'disable_existing_loggers': False,
227 'class': 'django.utils.log.AdminEmailHandler'
232 'handlers': ['mail_admins'],
238 ########## END LOGGING CONFIGURATION
241 ########## CELERY CONFIGURATION
242 # See: http://celery.readthedocs.org/en/latest/configuration.html#celery-task-result-expires
243 CELERY_TASK_RESULT_EXPIRES = timedelta(minutes=30)
245 # See: http://celery.github.com/celery/django/
247 ########## END CELERY CONFIGURATION
250 ########## WSGI CONFIGURATION
251 # See: https://docs.djangoproject.com/en/dev/ref/settings/#wsgi-application
252 WSGI_APPLICATION = 'wsgi.application'
253 ########## END WSGI CONFIGURATION
256 ########## COMPRESSION CONFIGURATION
257 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_ENABLED
258 COMPRESS_ENABLED = True
260 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_CSS_FILTERS
261 COMPRESS_CSS_FILTERS = [
262 'compressor.filters.template.TemplateFilter',
265 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_JS_FILTERS
266 COMPRESS_JS_FILTERS = [
267 'compressor.filters.template.TemplateFilter',
269 ########## END COMPRESSION CONFIGURATION
271 ########## TAGGIT CONFIGURATION
272 # From https://github.com/yedpodtrzitko/django-taggit
275 TAGGIT_FORCE_LOWERCASE = True
277 # Ignore common stopwords
278 TAGGIT_STOPWORDS = [u'a', u'an', u'and', u'be', u'from', u'of']
280 ########## END TAGGIT CONFIGURATION