umap/umap/settings/__init__.py

47 lines
1.6 KiB
Python

import os
import sys
import types
from django.utils.termcolors import colorize
from .base import * # NOQA, default values
# Allow to override setting from any file, may be out of the PYTHONPATH,
# to make it easier for non python people.
path = os.environ.get('UMAP_SETTINGS')
if not path:
# Retrocompat
path = os.path.join('/etc', 'umap', 'umap.conf')
if not os.path.exists(path):
# Retrocompat
path = os.path.join(os.path.dirname(os.path.realpath(__file__)),
'local.py')
if not os.path.exists(path):
msg = ('You must configure UMAP_SETTINGS or define '
'/etc/umap/umap.conf')
print(colorize(msg, fg='red'))
sys.exit(1)
d = types.ModuleType('config')
d.__file__ = path
try:
with open(path) as config_file:
exec(compile(config_file.read(), path, 'exec'), d.__dict__)
except IOError as e:
msg = 'Unable to import {} from UMAP_SETTINGS'.format(path)
print(colorize(msg, fg='red'))
sys.exit(e)
else:
print('Loaded local config from', path)
for key in dir(d):
if key.isupper():
value = getattr(d, key)
if key.startswith('LEAFLET_STORAGE'):
# Retrocompat pre 1.0, remove me in 1.1.
globals()['UMAP' + key[15:]] = value
elif key == 'UMAP_CUSTOM_TEMPLATES':
globals()['TEMPLATES'][0]['DIRS'].insert(0, value)
elif key == 'UMAP_CUSTOM_STATICS':
globals()['STATICFILES_DIRS'].insert(0, value)
else:
globals()[key] = value