Unifies Horizon conf.
Centralizes all of Horizon's configuration options so that they're all uniformly accesible from a single place and always guaranteed to exist. Implements blueprint unify-config. Change-Id: I3279b7ccd58302fcff4f0d273f89f282a285c442
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import copy
|
||||
|
||||
from django.utils.functional import LazyObject, empty
|
||||
|
||||
from .default import HORIZON_CONFIG as DEFAULT_CONFIG
|
||||
|
||||
|
||||
class LazySettings(LazyObject):
|
||||
def _setup(self, name=None):
|
||||
from django.conf import settings
|
||||
HORIZON_CONFIG = copy.copy(DEFAULT_CONFIG)
|
||||
HORIZON_CONFIG.update(settings.HORIZON_CONFIG)
|
||||
|
||||
# Ensure we always have our exception configuration...
|
||||
for exc_category in ['unauthorized', 'not_found', 'recoverable']:
|
||||
if exc_category not in HORIZON_CONFIG['exceptions']:
|
||||
default_exc_config = DEFAULT_CONFIG['exceptions'][exc_category]
|
||||
HORIZON_CONFIG['exceptions'][exc_category] = default_exc_config
|
||||
|
||||
# Ensure our password validator always exists...
|
||||
if 'regex' not in HORIZON_CONFIG['password_validator']:
|
||||
default_pw_regex = DEFAULT_CONFIG['password_validator']['regex']
|
||||
HORIZON_CONFIG['password_validator']['regex'] = default_pw_regex
|
||||
if 'help_text' not in HORIZON_CONFIG['password_validator']:
|
||||
default_pw_help = DEFAULT_CONFIG['password_validator']['help_text']
|
||||
HORIZON_CONFIG['password_validator']['help_text'] = default_pw_help
|
||||
|
||||
self._wrapped = HORIZON_CONFIG
|
||||
|
||||
def __getitem__(self, name, fallback=None):
|
||||
if self._wrapped is empty:
|
||||
self._setup(name)
|
||||
return self._wrapped.get(name, fallback)
|
||||
|
||||
HORIZON_CONFIG = LazySettings()
|
||||
|
||||
30
horizon/conf/default.py
Normal file
30
horizon/conf/default.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
# Default configuration dictionary. Do not mutate.
|
||||
HORIZON_CONFIG = {
|
||||
# Allow for ordering dashboards; list or tuple if provided.
|
||||
'dashboards': None,
|
||||
|
||||
# Name of a default dashboard; defaults to first alphabetically if None
|
||||
'default_dashboard': None,
|
||||
|
||||
# Default redirect url for users' home
|
||||
'user_home': settings.LOGIN_REDIRECT_URL,
|
||||
|
||||
# AJAX settings for JavaScript
|
||||
'ajax_queue_limit': 10,
|
||||
'ajax_poll_interval': 2500,
|
||||
|
||||
# URL for additional help with this site.
|
||||
'help_url': None,
|
||||
|
||||
# Exception configuration.
|
||||
'exceptions': {'unauthorized': [],
|
||||
'not_found': [],
|
||||
'recoverable': []},
|
||||
|
||||
# Password configuration.
|
||||
'password_validator': {'regex': '.*',
|
||||
'help_text': _("Password is not accepted")}
|
||||
}
|
||||
Reference in New Issue
Block a user