Configuring production settings for postgresql #67 and PyLibMemCache #31
[oweals/karmaworld.git] / karmaworld / settings / prod.py
1 #!/usr/bin/env python
2 # -*- coding:utf8 -*-
3 # Copyright (C) 2012  FinalsClub Foundation
4 """ Production settings and globals. """
5
6
7 from os import environ
8
9 from memcacheify import memcacheify
10 from postgresify import postgresify
11 from S3 import CallingFormat
12
13 from common import *
14
15
16 ########## EMAIL CONFIGURATION
17 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-backend
18 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
19
20 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-host
21 EMAIL_HOST = environ.get('EMAIL_HOST', 'smtp.gmail.com')
22
23 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-host-password
24 EMAIL_HOST_PASSWORD = environ.get('EMAIL_HOST_PASSWORD', '')
25
26 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-host-user
27 EMAIL_HOST_USER = environ.get('EMAIL_HOST_USER', 'your_email@example.com')
28
29 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-port
30 EMAIL_PORT = environ.get('EMAIL_PORT', 587)
31
32 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-subject-prefix
33 EMAIL_SUBJECT_PREFIX = '[%s] ' % SITE_NAME
34
35 # See: https://docs.djangoproject.com/en/dev/ref/settings/#email-use-tls
36 EMAIL_USE_TLS = True
37
38 # See: https://docs.djangoproject.com/en/dev/ref/settings/#server-email
39 SERVER_EMAIL = EMAIL_HOST_USER
40 ########## END EMAIL CONFIGURATION
41
42
43 ########## DATABASE CONFIGURATION
44 DATABASES = {
45     'default': {
46     'ENGINE': 'django.db.backends.postgresql_psycopg2',
47     'NAME': PROD_DB_NAME,
48     'USER': PROD_DB_USERNAME,
49     'PASSWORD': PROD_DB_PASSWORD,
50     'HOST': 'localhost',
51     'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
52     }
53 }
54 ########## END DATABASE CONFIGURATION
55
56
57 ########## CACHE CONFIGURATION
58 # See: https://docs.djangoproject.com/en/dev/ref/settings/#caches
59 CACHES = {
60     'default': {
61         'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
62     }
63 }
64 ########## END CACHE CONFIGURATION
65
66
67 ########## CELERY CONFIGURATION
68 # See: http://docs.celeryproject.org/en/latest/configuration.html#broker-transport
69 BROKER_TRANSPORT = 'amqplib'
70
71 # Set this number to the amount of allowed concurrent connections on your AMQP
72 # provider, divided by the amount of active workers you have.
73 #
74 # For example, if you have the 'Little Lemur' CloudAMQP plan (their free tier),
75 # they allow 3 concurrent connections. So if you run a single worker, you'd
76 # want this number to be 3. If you had 3 workers running, you'd lower this
77 # number to 1, since 3 workers each maintaining one open connection = 3
78 # connections total.
79 #
80 # See: http://docs.celeryproject.org/en/latest/configuration.html#broker-pool-limit
81 BROKER_POOL_LIMIT = 3
82
83 # See: http://docs.celeryproject.org/en/latest/configuration.html#broker-connection-max-retries
84 BROKER_CONNECTION_MAX_RETRIES = 0
85
86 # See: http://docs.celeryproject.org/en/latest/configuration.html#broker-url
87 BROKER_URL = environ.get('RABBITMQ_URL') or environ.get('CLOUDAMQP_URL')
88
89 # See: http://docs.celeryproject.org/en/latest/configuration.html#celery-result-backend
90 CELERY_RESULT_BACKEND = 'amqp'
91 ########## END CELERY CONFIGURATION
92
93
94 ########## STORAGE CONFIGURATION
95 # See: http://django-storages.readthedocs.org/en/latest/index.html
96 INSTALLED_APPS += (
97     'storages',
98 )
99
100 # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings
101 STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
102
103 # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings
104 AWS_CALLING_FORMAT = CallingFormat.SUBDOMAIN
105
106 # See: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html#settings
107 AWS_ACCESS_KEY_ID = environ.get('AWS_ACCESS_KEY_ID', '')
108 AWS_SECRET_ACCESS_KEY = environ.get('AWS_SECRET_ACCESS_KEY', '')
109 AWS_STORAGE_BUCKET_NAME = environ.get('AWS_STORAGE_BUCKET_NAME', '')
110 AWS_AUTO_CREATE_BUCKET = True
111 AWS_QUERYSTRING_AUTH = False
112
113 # AWS cache settings, don't change unless you know what you're doing:
114 AWS_EXPIREY = 60 * 60 * 24 * 7
115 AWS_HEADERS = {
116     'Cache-Control': 'max-age=%d, s-maxage=%d, must-revalidate' % (AWS_EXPIREY,
117         AWS_EXPIREY)
118 }
119
120 # See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url
121 STATIC_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME
122 ########## END STORAGE CONFIGURATION
123
124
125 ########## COMPRESSION CONFIGURATION
126 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_OFFLINE
127 COMPRESS_OFFLINE = True
128
129 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_STORAGE
130 COMPRESS_STORAGE = DEFAULT_FILE_STORAGE
131
132 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_CSS_FILTERS
133 COMPRESS_CSS_FILTERS += [
134     'compressor.filters.cssmin.CSSMinFilter',
135 ]
136
137 # See: http://django_compressor.readthedocs.org/en/latest/settings/#django.conf.settings.COMPRESS_JS_FILTERS
138 COMPRESS_JS_FILTERS += [
139     'compressor.filters.jsmin.JSMinFilter',
140 ]
141 ########## END COMPRESSION CONFIGURATION
142
143
144 ########## SECRET CONFIGURATION
145 # See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
146 SECRET_KEY = environ.get('SECRET_KEY', SECRET_KEY)
147 ########## END SECRET CONFIGURATION