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