851860f286b656e40932da21cd43b73429ac431c
[wolnelektury.git] / wolnelektury / settings.py
1 # -*- coding: utf-8 -*-
2 # Django settings for wolnelektury project.
3 from os import path
4
5 PROJECT_DIR = path.abspath(path.dirname(__file__))
6
7 DEBUG = False
8 TEMPLATE_DEBUG = DEBUG
9 MAINTENANCE_MODE = False
10
11 ADMINS = [
12     # ('Your Name', 'your_email@domain.com'),
13 ]
14
15 MANAGERS = ADMINS
16
17 DATABASES = {
18     'default': {
19         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
20         'NAME': 'wl', # Or path to database file if using sqlite3.
21         'USER': 'wl',                      # Not used with sqlite3.
22         'PASSWORD': 'test',                  # Not used with sqlite3.
23         'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
24         'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
25     }
26 }
27
28 DATABASE_OPTIONS = {
29    "init_command": "SET storage_engine=INNODB DEFAULT CHARSET=utf8",
30 }
31
32
33 # Local time zone for this installation. Choices can be found here:
34 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
35 # although not all choices may be available on all operating systems.
36 # If running in a Windows environment this must be set to the same as your
37 # system time zone.
38 TIME_ZONE = 'Europe/Warsaw'
39
40 # Language code for this installation. All choices can be found here:
41 # http://www.i18nguy.com/unicode/language-identifiers.html
42 LANGUAGE_CODE = 'pl'
43
44 gettext = lambda s: s
45
46 LANGUAGES = tuple(sorted([
47     ('pl', u'polski'),
48     ('de', u'Deutsch'),
49     ('en', u'English'),
50     ('lt', u'lietuvių'),
51     ('fr', u'français'),
52     ('ru', u'русский'),
53     ('es', u'español'),
54     ('uk', u'українська'),
55 ], key=lambda x: x[0]))
56
57
58 SITE_ID = 1
59
60 # If you set this to False, Django will make some optimizations so as not
61 # to load the internationalization machinery.
62 USE_I18N = True
63
64 # Absolute path to the directory that holds media.
65 # Example: "/home/media/media.lawrence.com/"
66 MEDIA_ROOT = path.join(PROJECT_DIR, '../media/')
67 STATIC_ROOT = path.join(PROJECT_DIR, 'static/')
68 SEARCH_INDEX = path.join(MEDIA_ROOT, 'search/')
69
70 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
71 # trailing slash if there is a path component (optional in other cases).
72 # Examples: "http://media.lawrence.com", "http://example.com/media/"
73 MEDIA_URL = '/media/'
74 STATIC_URL = '/static/'
75
76 # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
77 # trailing slash.
78 # Examples: "http://foo.com/media/", "/media/".
79 ADMIN_MEDIA_PREFIX = '/admin-media/'
80
81 # Make this unique, and don't share it with anybody.
82
83 # List of callables that know how to import templates from various sources.
84 TEMPLATE_LOADERS = [
85     'django.template.loaders.filesystem.Loader',
86     'django.template.loaders.app_directories.Loader',
87 #     'django.template.loaders.eggs.Loader',
88 ]
89
90 TEMPLATE_CONTEXT_PROCESSORS = (
91     'django.contrib.auth.context_processors.auth',
92     'django.core.context_processors.debug',
93     'django.core.context_processors.i18n',
94     'django.core.context_processors.media',
95     'django.core.context_processors.request',
96     'wolnelektury.context_processors.extra_settings',
97     'search.context_processors.search_form',
98 )
99
100 MIDDLEWARE_CLASSES = [
101     'django.middleware.cache.UpdateCacheMiddleware',
102     'django.middleware.common.CommonMiddleware',
103     'django.contrib.sessions.middleware.SessionMiddleware',
104     'django.contrib.auth.middleware.AuthenticationMiddleware',
105     'django.middleware.doc.XViewMiddleware',
106     'pagination.middleware.PaginationMiddleware',
107     'django.middleware.locale.LocaleMiddleware',
108     'piwik.django.middleware.PiwikMiddleware',
109     'maintenancemode.middleware.MaintenanceModeMiddleware',
110     'django.middleware.common.CommonMiddleware',
111     'django.middleware.cache.FetchFromCacheMiddleware',
112 ]
113
114 ROOT_URLCONF = 'wolnelektury.urls'
115
116 TEMPLATE_DIRS = [
117     path.join(PROJECT_DIR, 'templates'),
118 ]
119
120 LOGIN_URL = '/uzytkownicy/zaloguj/'
121
122 LOGIN_REDIRECT_URL = '/'
123
124 INSTALLED_APPS = [
125     # external
126     'django.contrib.auth',
127     'django.contrib.contenttypes',
128     'django.contrib.sessions',
129     'django.contrib.sites',
130     'django.contrib.admin',
131     'django.contrib.admindocs',
132     'pagination',
133     'piston',
134     'piwik.django',
135     'rosetta',
136     'south',
137     'sorl.thumbnail',
138     'djcelery',
139     'djkombu',
140     #    'django_nose',
141
142     # included
143     'compress',
144     'modeltranslation',
145
146     # our
147     'ajaxable',
148     'api',
149     'catalogue',
150     'chunks',
151     'dictionary',
152     'infopages',
153     'lesmianator',
154     'lessons',
155     'newtagging',
156     'opds',
157     'pdcounter',
158     'reporting',
159     'sponsors',
160     'stats',
161     'suggest',
162     'picture',
163     'search',
164     'social',
165 ]
166
167 CACHES = {
168     'default': {
169         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
170         'LOCATION': [
171             '127.0.0.1:11211',
172         ]
173     },
174     'permanent': {
175         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
176         'TIMEOUT': 2419200,
177         'LOCATION': [
178             '127.0.0.1:11211',
179         ]
180     },
181     'api': {
182         'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
183         'LOCATION': path.join(PROJECT_DIR, 'django_cache/'),
184         'KEY_PREFIX': 'api',
185         'TIMEOUT': 86400,
186     },
187 }
188 CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True
189
190 # CSS and JavaScript file groups
191 COMPRESS_CSS = {
192     'all': {
193         #'source_filenames': ('css/master.css', 'css/jquery.autocomplete.css', 'css/master.plain.css', 'css/facelist_2-0.css',),
194         'source_filenames': [
195             'css/jquery.countdown.css', 
196
197             'css/base.css',
198             'css/header.css',
199             'css/main_page.css',
200             'css/dialogs.css',
201             'css/picture_box.css',
202             'css/book_box.css',
203             'css/catalogue.css',
204             'css/sponsors.css',
205             
206             'css/ui-lightness/jquery-ui-1.8.16.custom.css',
207         ],
208         'output_filename': 'css/all.min?.css',
209     },
210     'book': {
211         'source_filenames': ('css/master.book.css',),
212         'output_filename': 'css/book.min?.css',
213     },
214     'player': {
215         'source_filenames': [
216             'jplayer/jplayer.blue.monday.css', 
217         ],
218         'output_filename': 'css/player.min?.css',
219     },
220     'simple': {
221         'source_filenames': ('css/simple.css',),
222         'output_filename': 'css/simple.min?.css',
223     },
224 }
225
226 COMPRESS_JS = {
227     'base': {
228         'source_filenames': (
229             'js/jquery.cycle.min.js',
230             'js/jquery.jqmodal.js',
231             'js/jquery.form.js',
232             'js/jquery.countdown.js', 'js/jquery.countdown-pl.js',
233             'js/jquery.countdown-de.js', 'js/jquery.countdown-uk.js',
234             'js/jquery.countdown-es.js', 'js/jquery.countdown-lt.js',
235             'js/jquery.countdown-ru.js', 'js/jquery.countdown-fr.js',
236
237             'js/jquery-ui-1.8.16.custom.min.js',
238
239             'js/locale.js',
240             'js/dialogs.js',
241             'js/sponsors.js',
242             'js/base.js',
243             'js/pdcounter.js',
244
245             'js/search.js',
246
247             'js/jquery.labelify.js',
248             ),
249         'output_filename': 'js/base?.min.js',
250     },
251     'player': {
252         'source_filenames': [
253             'jplayer/jquery.jplayer.min.js', 
254             'jplayer/jplayer.playlist.min.js', 
255             'js/player.js', 
256         ],
257         'output_filename': 'js/player.min?.js',
258     },
259     'book': {
260         'source_filenames': ('js/jquery.eventdelegation.js', 'js/jquery.scrollto.js', 'js/jquery.highlightfade.js', 'js/book.js',),
261         'output_filename': 'js/book?.min.js',
262     },
263     'book_ie': {
264         'source_filenames': ('js/ierange-m2.js',),
265         'output_filename': 'js/book_ie?.min.js',
266     }
267
268 }
269
270 COMPRESS_VERSION = True
271 COMPRESS_CSS_FILTERS = None
272
273 THUMBNAIL_QUALITY = 95
274 THUMBNAIL_EXTENSION = 'png'
275
276 THUMBNAIL_PROCESSORS = (
277     # Default processors
278     'sorl.thumbnail.processors.colorspace',
279     'sorl.thumbnail.processors.autocrop',
280     'sorl.thumbnail.processors.scale_and_crop',
281     'sorl.thumbnail.processors.filters',
282     # Custom processors
283     'sponsors.processors.add_padding',
284 )
285
286 TRANSLATION_REGISTRY = "wolnelektury.translation"
287
288
289 # seconds until a changes appears in the changes api
290 API_WAIT = 10
291
292 # limit number of filtering tags
293 MAX_TAG_LIST = 6
294
295 NO_BUILD_EPUB = False
296 NO_BUILD_TXT = False
297 NO_BUILD_PDF = False
298 NO_BUILD_MOBI = True
299 NO_SEARCH_INDEX = False
300
301 ALL_EPUB_ZIP = 'wolnelektury_pl_epub'
302 ALL_PDF_ZIP = 'wolnelektury_pl_pdf'
303 ALL_MOBI_ZIP = 'wolnelektury_pl_mobi'
304
305 CATALOGUE_DEFAULT_LANGUAGE = 'pol'
306 PUBLISH_PLAN_FEED = 'http://redakcja.wolnelektury.pl/documents/track/editor-proofreading/'
307
308 PAGINATION_INVALID_PAGE_RAISES_404 = True
309
310 import djcelery
311 djcelery.setup_loader()
312
313 BROKER_BACKEND = "djkombu.transport.DatabaseTransport"
314 BROKER_HOST = "localhost"
315 BROKER_PORT = 5672
316 BROKER_USER = "guest"
317 BROKER_PASSWORD = "guest"
318 BROKER_VHOST = "/"
319
320 CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
321
322 # Load localsettings, if they exist
323 try:
324     from localsettings import *
325 except ImportError:
326     pass
327