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
95 # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-root
96 STATIC_ROOT = normpath(join(DJANGO_ROOT, 'static'))
98 # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url
99 STATIC_URL = '/static/'
101 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
103 normpath(join(DJANGO_ROOT, 'assets')),
106 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders
107 STATICFILES_FINDERS = (
108 'django.contrib.staticfiles.finders.FileSystemFinder',
109 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
110 'compressor.finders.CompressorFinder',
112 ########## END STATIC FILE CONFIGURATION
115 ########## SECRET CONFIGURATION
116 # See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
117 SECRET_KEY = r"(s1k!&^7l28k&nrm2ek(qqo&19%y(zn#=^zq_*ur2@irjun0x4"
118 ########## END SECRET CONFIGURATION
121 ########## FIXTURE CONFIGURATION
122 # See: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-FIXTURE_DIRS
124 normpath(join(DJANGO_ROOT, 'fixtures')),
126 ########## END FIXTURE CONFIGURATION
129 ########## TEMPLATE CONFIGURATION
130 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors
131 TEMPLATE_CONTEXT_PROCESSORS = (
132 'django.contrib.auth.context_processors.auth',
133 'django.core.context_processors.debug',
134 'django.core.context_processors.i18n',
135 'django.core.context_processors.media',
136 'django.core.context_processors.static',
137 'django.core.context_processors.tz',
138 'django.contrib.messages.context_processors.messages',
139 'django.core.context_processors.request',
142 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-loaders
144 'django.template.loaders.filesystem.Loader',
145 'django.template.loaders.app_directories.Loader',
148 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs
150 normpath(join(DJANGO_ROOT, 'templates')),
152 ########## END TEMPLATE CONFIGURATION
155 ########## MIDDLEWARE CONFIGURATION
156 # See: https://docs.djangoproject.com/en/dev/ref/settings/#middleware-classes
157 MIDDLEWARE_CLASSES = (
158 # Use GZip compression to reduce bandwidth.
159 'django.middleware.gzip.GZipMiddleware',
161 # Default Django middleware.
162 'django.middleware.common.CommonMiddleware',
163 'django.contrib.sessions.middleware.SessionMiddleware',
164 'django.middleware.csrf.CsrfViewMiddleware',
165 'django.contrib.auth.middleware.AuthenticationMiddleware',
166 'django.contrib.messages.middleware.MessageMiddleware',
168 ########## END MIDDLEWARE CONFIGURATION
171 ########## URL CONFIGURATION
172 # See: https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf
173 ROOT_URLCONF = '%s.urls' % SITE_NAME
174 ########## END URL CONFIGURATION
177 ########## APP CONFIGURATION
179 # Default Django apps:
180 'django.contrib.auth',
181 'django.contrib.contenttypes',
182 'django.contrib.sessions',
183 'django.contrib.sites',
184 'django.contrib.messages',
185 'django.contrib.staticfiles',
187 # Useful template tags:
188 'django.contrib.humanize',
190 # grappelli django-admin improvment, must be added before admin
193 # Admin panel and documentation:
194 'django.contrib.admin',
195 'django.contrib.admindocs',
199 # Database migration helpers:
202 # Static file management:
205 # Asynchronous task queue:
208 # Tagging https://github.com/yedpodtrzitko/django-taggit
214 'karmaworld.apps.notes',
215 'karmaworld.apps.courses',
216 'karmaworld.apps.ajaxuploader',
219 # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
220 INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
221 ########## END APP CONFIGURATION
224 ########## LOGGING CONFIGURATION
225 # See: https://docs.djangoproject.com/en/dev/ref/settings/#logging
228 'disable_existing_loggers': False,
232 'class': 'django.utils.log.AdminEmailHandler'
237 'handlers': ['mail_admins'],
243 ########## END LOGGING CONFIGURATION
246 ########## CELERY CONFIGURATION
247 # See: http://celery.readthedocs.org/en/latest/configuration.html#celery-task-result-expires
248 CELERY_TASK_RESULT_EXPIRES = timedelta(minutes=30)
250 # See: http://celery.github.com/celery/django/
252 ########## END CELERY CONFIGURATION
255 ########## WSGI CONFIGURATION
256 # See: https://docs.djangoproject.com/en/dev/ref/settings/#wsgi-application
257 WSGI_APPLICATION = 'wsgi.application'
258 ########## END WSGI CONFIGURATION
261 ########## COMPRESSION CONFIGURATION
262 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_ENABLED
263 COMPRESS_ENABLED = True
265 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_CSS_FILTERS
266 COMPRESS_CSS_FILTERS = [
267 'compressor.filters.template.TemplateFilter',
270 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_JS_FILTERS
271 COMPRESS_JS_FILTERS = [
272 'compressor.filters.template.TemplateFilter',
274 ########## END COMPRESSION CONFIGURATION
276 ########## TAGGIT CONFIGURATION
277 # From https://github.com/yedpodtrzitko/django-taggit
280 TAGGIT_FORCE_LOWERCASE = True
282 # Ignore common stopwords
283 TAGGIT_STOPWORDS = [u'a', u'an', u'and', u'be', u'from', u'of']
285 ########## END TAGGIT CONFIGURATION