Commit b71fe7377ea7a34c0995c8b0f499f783428cb9a9
1 parent
47ca4d8d
Exists in
master
and in
31 other branches
Don't allow auto db conf if debug is False
Showing
3 changed files
with
30 additions
and
4 deletions
Show diff stats
colab/management/initconfig.py
@@ -32,6 +32,11 @@ ALLOWED_HOSTS = [ | @@ -32,6 +32,11 @@ ALLOWED_HOSTS = [ | ||
32 | # SOCIAL_NETWORK_ENABLED = True | 32 | # SOCIAL_NETWORK_ENABLED = True |
33 | 33 | ||
34 | ## Database settings | 34 | ## Database settings |
35 | +## | ||
36 | +## When DEBUG is True colab will create the DB on | ||
37 | +## the repository root. In case of production settings | ||
38 | +## (DEBUG False) the DB settings must be set. | ||
39 | +## | ||
35 | # DATABASES = {{ | 40 | # DATABASES = {{ |
36 | # 'default': {{ | 41 | # 'default': {{ |
37 | # 'ENGINE': 'django.db.backends.sqlite3', | 42 | # 'ENGINE': 'django.db.backends.sqlite3', |
colab/settings.py
@@ -9,6 +9,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/ | @@ -9,6 +9,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/ | ||
9 | """ | 9 | """ |
10 | 10 | ||
11 | BROKER_URL = 'amqp://guest:guest@localhost:5672/' | 11 | BROKER_URL = 'amqp://guest:guest@localhost:5672/' |
12 | + | ||
12 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) | 13 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) |
13 | import os | 14 | import os |
14 | BASE_DIR = os.path.dirname(__file__) | 15 | BASE_DIR = os.path.dirname(__file__) |
@@ -172,10 +173,11 @@ HAYSTACK_CONNECTIONS = { | @@ -172,10 +173,11 @@ HAYSTACK_CONNECTIONS = { | ||
172 | } | 173 | } |
173 | } | 174 | } |
174 | 175 | ||
176 | +DEFAULT_DATABASE = os.path.join(BASE_DIR, 'colab.sqlite3') | ||
175 | DATABASES = { | 177 | DATABASES = { |
176 | 'default': { | 178 | 'default': { |
177 | 'ENGINE': 'django.db.backends.sqlite3', | 179 | 'ENGINE': 'django.db.backends.sqlite3', |
178 | - 'NAME': os.path.join(BASE_DIR, 'colab.sqlite3'), | 180 | + 'NAME': DEFAULT_DATABASE, |
179 | } | 181 | } |
180 | } | 182 | } |
181 | 183 | ||
@@ -252,12 +254,12 @@ REVPROXY_ADD_REMOTE_USER = True | @@ -252,12 +254,12 @@ REVPROXY_ADD_REMOTE_USER = True | ||
252 | # Tastypie settings | 254 | # Tastypie settings |
253 | TASTYPIE_DEFAULT_FORMATS = ['json', ] | 255 | TASTYPIE_DEFAULT_FORMATS = ['json', ] |
254 | 256 | ||
255 | -from .utils.conf import load_colab_apps, load_py_settings | 257 | +from .utils import conf |
256 | 258 | ||
257 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False | 259 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False |
258 | 260 | ||
259 | -locals().update(load_colab_apps()) | ||
260 | -locals().update(load_py_settings()) | 261 | +locals().update(conf.load_colab_apps()) |
262 | +locals().update(conf.load_py_settings()) | ||
261 | 263 | ||
262 | COLAB_APPS = locals().get('COLAB_APPS') or {} | 264 | COLAB_APPS = locals().get('COLAB_APPS') or {} |
263 | PROXIED_APPS = {} | 265 | PROXIED_APPS = {} |
@@ -297,3 +299,5 @@ STATICFILES_DIRS += [ | @@ -297,3 +299,5 @@ STATICFILES_DIRS += [ | ||
297 | TEMPLATE_DIRS += ( | 299 | TEMPLATE_DIRS += ( |
298 | os.path.join(BASE_DIR, 'templates'), | 300 | os.path.join(BASE_DIR, 'templates'), |
299 | ) | 301 | ) |
302 | + | ||
303 | +conf.validate_database(DATABASES, DEFAULT_DATABASE, DEBUG) |
colab/utils/conf.py
@@ -5,6 +5,7 @@ import importlib | @@ -5,6 +5,7 @@ import importlib | ||
5 | import warnings | 5 | import warnings |
6 | 6 | ||
7 | from django.core.exceptions import ImproperlyConfigured | 7 | from django.core.exceptions import ImproperlyConfigured |
8 | +from django.utils.translation import ugettext as _ | ||
8 | 9 | ||
9 | 10 | ||
10 | class InaccessibleSettings(ImproperlyConfigured): | 11 | class InaccessibleSettings(ImproperlyConfigured): |
@@ -13,6 +14,14 @@ class InaccessibleSettings(ImproperlyConfigured): | @@ -13,6 +14,14 @@ class InaccessibleSettings(ImproperlyConfigured): | ||
13 | Check if the file exists and if you have read permissions.""" | 14 | Check if the file exists and if you have read permissions.""" |
14 | 15 | ||
15 | 16 | ||
17 | +class DatabaseUndefined(ImproperlyConfigured): | ||
18 | + """Default database is not set. | ||
19 | + | ||
20 | + When DEBUG is set to True a local sqlite database can be used for | ||
21 | + developement porposes but otherwise the `default` database must | ||
22 | + be set.""" | ||
23 | + | ||
24 | + | ||
16 | def _load_py_file(py_path, path): | 25 | def _load_py_file(py_path, path): |
17 | original_path = sys.path | 26 | original_path = sys.path |
18 | 27 | ||
@@ -94,3 +103,11 @@ def load_colab_apps(): | @@ -94,3 +103,11 @@ def load_colab_apps(): | ||
94 | COLAB_APPS[app_name][key] = value | 103 | COLAB_APPS[app_name][key] = value |
95 | 104 | ||
96 | return {'COLAB_APPS': COLAB_APPS} | 105 | return {'COLAB_APPS': COLAB_APPS} |
106 | + | ||
107 | + | ||
108 | +def validate_database(database_dict, default_db, debug): | ||
109 | + db_name = database_dict.get('default', {}).get('NAME') | ||
110 | + if not debug and db_name == default_db: | ||
111 | + msg = _('Since DEBUG is set to False DATABASE must be set on ' | ||
112 | + 'colab settings') | ||
113 | + raise DatabaseUndefined(msg) |