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
13 from karmaworld.secret.filepicker import FILEPICKER_API_KEY as fp_api
15 FILEPICKER_API_KEY = fp_api
18 ########## PATH CONFIGURATION
19 # Absolute filesystem path to the Django project directory:
20 DJANGO_ROOT = dirname(dirname(abspath(__file__)))
22 # Absolute filesystem path to the top-level project folder:
23 SITE_ROOT = dirname(DJANGO_ROOT)
26 SITE_NAME = basename(DJANGO_ROOT)
28 # Add our project to our pythonpath, this way we don't need to type our project
29 # name in our dotted import paths:
30 path.append(DJANGO_ROOT)
31 ########## END PATH CONFIGURATION
34 ########## DEBUG CONFIGURATION
35 # See: https://docs.djangoproject.com/en/dev/ref/settings/#debug
38 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-debug
39 TEMPLATE_DEBUG = DEBUG
40 ########## END DEBUG CONFIGURATION
43 ########## MANAGER CONFIGURATION
44 # See: https://docs.djangoproject.com/en/dev/ref/settings/#admins
46 ('Seth Woodworth', 'seth@finalsclub.org'),
47 ('Charles Holbrow', 'charles@finalsclub.org'),
48 ('Andrew Magliozzi', 'andrew@finalsclub.org'),
51 # See: https://docs.djangoproject.com/en/dev/ref/settings/#managers
53 ########## END MANAGER CONFIGURATION
56 ########## DATABASE CONFIGURATION
57 # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
60 'ENGINE': 'django.db.backends.',
68 ########## END DATABASE CONFIGURATION
71 ########## GENERAL CONFIGURATION
72 # See: https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
73 TIME_ZONE = 'America/New_York'
75 # See: https://docs.djangoproject.com/en/dev/ref/settings/#language-code
76 LANGUAGE_CODE = 'en-us'
78 # See: https://docs.djangoproject.com/en/dev/ref/settings/#site-id
81 # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n
84 # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-l10n
86 ########## END GENERAL CONFIGURATION
89 ########## MEDIA CONFIGURATION
90 # See: https://docs.djangoproject.com/en/dev/ref/settings/#media-root
91 MEDIA_ROOT = normpath(join(DJANGO_ROOT, 'media'))
93 # See: https://docs.djangoproject.com/en/dev/ref/settings/#media-url
95 ########## END MEDIA CONFIGURATION
98 ########## STATIC FILE CONFIGURATION
100 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
102 normpath(join(DJANGO_ROOT, 'assets')),
105 # See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders
106 STATICFILES_FINDERS = (
107 'django.contrib.staticfiles.finders.FileSystemFinder',
108 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
109 'compressor.finders.CompressorFinder',
111 ########## END STATIC FILE CONFIGURATION
114 ########## SECRET CONFIGURATION
115 # See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
116 SECRET_KEY = r"(s1k!&^7l28k&nrm2ek(qqo&19%y(zn#=^zq_*ur2@irjun0x4"
117 ########## END SECRET CONFIGURATION
120 ########## FIXTURE CONFIGURATION
121 # See: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-FIXTURE_DIRS
123 normpath(join(DJANGO_ROOT, 'fixtures')),
125 ########## END FIXTURE CONFIGURATION
128 ########## TEMPLATE CONFIGURATION
129 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors
130 TEMPLATE_CONTEXT_PROCESSORS = (
131 'django.contrib.auth.context_processors.auth',
132 'django.core.context_processors.debug',
133 'django.core.context_processors.i18n',
134 'django.core.context_processors.media',
135 'django.core.context_processors.static',
136 'django.core.context_processors.tz',
137 'django.contrib.messages.context_processors.messages',
138 'django.core.context_processors.request',
141 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-loaders
143 'django.template.loaders.filesystem.Loader',
144 'django.template.loaders.app_directories.Loader',
147 # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs
149 normpath(join(DJANGO_ROOT, 'templates')),
151 ########## END TEMPLATE CONFIGURATION
154 ########## MIDDLEWARE CONFIGURATION
155 # See: https://docs.djangoproject.com/en/dev/ref/settings/#middleware-classes
156 MIDDLEWARE_CLASSES = (
157 # Use GZip compression to reduce bandwidth.
158 'django.middleware.gzip.GZipMiddleware',
160 # Default Django middleware.
161 'django.middleware.common.CommonMiddleware',
162 'django.contrib.sessions.middleware.SessionMiddleware',
163 'django.middleware.csrf.CsrfViewMiddleware',
164 'django.contrib.auth.middleware.AuthenticationMiddleware',
165 'django.contrib.messages.middleware.MessageMiddleware',
167 ########## END MIDDLEWARE CONFIGURATION
170 ########## URL CONFIGURATION
171 # See: https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf
172 ROOT_URLCONF = '%s.urls' % SITE_NAME
173 ########## END URL CONFIGURATION
176 ########## APP CONFIGURATION
178 # Default Django apps:
179 'django.contrib.auth',
180 'django.contrib.contenttypes',
181 'django.contrib.sessions',
182 'django.contrib.sites',
183 'django.contrib.messages',
184 'django.contrib.staticfiles',
186 # Useful template tags:
187 'django.contrib.humanize',
189 # grappelli django-admin improvment, must be added before admin
192 # Admin panel and documentation:
193 'django.contrib.admin',
194 'django.contrib.admindocs',
198 # Database migration helpers:
201 # Static file management:
204 # Asynchronous task queue:
207 # Tagging https://github.com/yedpodtrzitko/django-taggit
213 'karmaworld.apps.notes',
214 'karmaworld.apps.courses',
215 'karmaworld.apps.ajaxuploader',
216 'karmaworld.apps.document_upload',
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