Skip to content

Commit 21c24c5

Browse files
committed
added config.py
1 parent 0936e0a commit 21c24c5

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

config.py

+140
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# -*- coding: utf-8 -*-
2+
import os
3+
4+
from envparse import env
5+
6+
env.read_envfile()
7+
8+
basedir = os.path.abspath(os.path.dirname(__file__))
9+
10+
VERSION_NAME = '2.1.0-alpha.0'
11+
12+
LANGUAGES = {
13+
'en': 'English',
14+
'bn': 'Bengali/Bangla',
15+
'zh_Hans': 'Chinese (Simplified)',
16+
'zh_Hant': 'Chinese (Traditional)',
17+
'fr': 'French',
18+
'de': 'German',
19+
'id': 'Indonesian',
20+
'ko': 'Korean',
21+
'pl': 'Polish',
22+
'es': 'Spanish',
23+
'th': 'Thai',
24+
'vi': 'Vietnamese',
25+
'hi': 'Hindi',
26+
'ja': 'Japanese',
27+
'ru': 'Russian',
28+
}
29+
30+
31+
class Config(object):
32+
"""
33+
The base configuration option. Contains the defaults.
34+
"""
35+
36+
DEBUG = False
37+
38+
DEVELOPMENT = False
39+
STAGING = False
40+
PRODUCTION = False
41+
TESTING = False
42+
43+
CACHING = False
44+
PROFILE = False
45+
SQLALCHEMY_RECORD_QUERIES = False
46+
47+
FLASK_ADMIN_SWATCH = 'lumen'
48+
49+
VERSION = VERSION_NAME
50+
SQLALCHEMY_TRACK_MODIFICATIONS = True
51+
ERROR_404_HELP = False
52+
CSRF_ENABLED = True
53+
SERVER_NAME = env('SERVER_NAME', default=None)
54+
CORS_HEADERS = 'Content-Type'
55+
SQLALCHEMY_DATABASE_URI = env('DATABASE_URL', default=None)
56+
SERVE_STATIC = env.bool('SERVE_STATIC', default=False)
57+
DATABASE_QUERY_TIMEOUT = 0.1
58+
SENTRY_DSN = env('SENTRY_DSN', default=None)
59+
ENABLE_ELASTICSEARCH = env.bool('ENABLE_ELASTICSEARCH', default=False)
60+
ELASTICSEARCH_HOST = env('ELASTICSEARCH_HOST', default='localhost:9200')
61+
REDIS_URL = env('REDIS_URL', default='redis://localhost:6379/0')
62+
CELERY_BACKKEND = env('CELERY_BACKEND', default='redis')
63+
64+
# API configs
65+
SOFT_DELETE = True
66+
PROPOGATE_ERROR = env.bool('PROPOGATE_ERROR', default=False)
67+
DASHERIZE_API = True
68+
API_PROPOGATE_UNCAUGHT_EXCEPTIONS = env.bool('API_PROPOGATE_UNCAUGHT_EXCEPTIONS', default=True)
69+
ETAG = True
70+
71+
if not SQLALCHEMY_DATABASE_URI:
72+
print('`DATABASE_URL` either not exported or empty')
73+
exit()
74+
75+
BASE_DIR = basedir
76+
FORCE_SSL = os.getenv('FORCE_SSL', 'no') == 'yes'
77+
78+
if SERVE_STATIC:
79+
UPLOADS_FOLDER = BASE_DIR + '/static/uploads/'
80+
TEMP_UPLOADS_FOLDER = BASE_DIR + '/static/uploads/temp/'
81+
UPLOAD_FOLDER = UPLOADS_FOLDER
82+
STATIC_URL = '/static/'
83+
STATIC_ROOT = 'staticfiles'
84+
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
85+
86+
if FORCE_SSL:
87+
PREFERRED_URL_SCHEME = 'https'
88+
89+
90+
class ProductionConfig(Config):
91+
"""
92+
The configuration for a production environment
93+
"""
94+
95+
ENV = 'production'
96+
MINIFY_PAGE = True
97+
PRODUCTION = True
98+
CACHING = True
99+
100+
# if force on
101+
102+
103+
class StagingConfig(ProductionConfig):
104+
"""
105+
The configuration for a staging environment
106+
"""
107+
108+
PRODUCTION = False
109+
STAGING = True
110+
111+
112+
class DevelopmentConfig(Config):
113+
"""
114+
The configuration for a development environment
115+
"""
116+
117+
ENV = 'development'
118+
DEVELOPMENT = True
119+
DEBUG = True
120+
CACHING = True
121+
PROPOGATE_ERROR = True
122+
123+
# Test database performance
124+
SQLALCHEMY_RECORD_QUERIES = True
125+
126+
127+
class TestingConfig(Config):
128+
"""
129+
The configuration for a test suit
130+
"""
131+
132+
ENV = 'testing'
133+
TESTING = True
134+
CELERY_TASK_ALWAYS_EAGER = True
135+
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
136+
SQLALCHEMY_RECORD_QUERIES = True
137+
DEBUG_TB_ENABLED = False
138+
BROKER_BACKEND = 'memory'
139+
SQLALCHEMY_DATABASE_URI = env('TEST_DATABASE_URL', default=None)
140+
PROPOGATE_ERROR = True

0 commit comments

Comments
 (0)