use pathlib to build paths in settings.py
This commit is contained in:
parent
641b2309c0
commit
e0f669c62c
1 changed files with 31 additions and 40 deletions
|
@ -4,6 +4,7 @@ import os
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import sass
|
import sass
|
||||||
from django.contrib.messages import constants as messages
|
from django.contrib.messages import constants as messages
|
||||||
|
@ -21,7 +22,7 @@ INSTANCE_NAME = config.get('c3nav', 'name', fallback='')
|
||||||
SENTRY_DSN = config.get('sentry', 'dsn', fallback=None)
|
SENTRY_DSN = config.get('sentry', 'dsn', fallback=None)
|
||||||
|
|
||||||
with suppress(ImportError):
|
with suppress(ImportError):
|
||||||
if (SENTRY_DSN):
|
if SENTRY_DSN:
|
||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from sentry_sdk.integrations.celery import CeleryIntegration
|
from sentry_sdk.integrations.celery import CeleryIntegration
|
||||||
from sentry_sdk.integrations.django import DjangoIntegration
|
from sentry_sdk.integrations.django import DjangoIntegration
|
||||||
|
@ -31,39 +32,29 @@ with suppress(ImportError):
|
||||||
integrations=[CeleryIntegration(), DjangoIntegration()]
|
integrations=[CeleryIntegration(), DjangoIntegration()]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: BASE_DIR / 'something'
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
PROJECT_DIR = Path(__file__).resolve().parent
|
||||||
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('C3NAV_DATA_DIR', os.path.join(BASE_DIR, 'data')))
|
BASE_DIR = PROJECT_DIR.parent
|
||||||
LOG_DIR = config.get('c3nav', 'logdir', fallback=os.path.join(DATA_DIR, 'logs'))
|
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('C3NAV_DATA_DIR', None))
|
||||||
MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
|
DATA_DIR = Path(DATA_DIR).resolve() if DATA_DIR else BASE_DIR / 'data'
|
||||||
SOURCES_ROOT = os.path.join(DATA_DIR, 'sources')
|
LOG_DIR = config.get('c3nav', 'logdir', fallback=None)
|
||||||
MAP_ROOT = os.path.join(DATA_DIR, 'map')
|
LOG_DIR = Path(LOG_DIR).resolve() if LOG_DIR else DATA_DIR / 'logs'
|
||||||
RENDER_ROOT = os.path.join(DATA_DIR, 'render')
|
MEDIA_ROOT = DATA_DIR / 'media'
|
||||||
TILES_ROOT = os.path.join(DATA_DIR, 'tiles')
|
SOURCES_ROOT = DATA_DIR / 'sources'
|
||||||
CACHE_ROOT = os.path.join(DATA_DIR, 'cache')
|
MAP_ROOT = DATA_DIR / 'map'
|
||||||
STATS_ROOT = os.path.join(DATA_DIR, 'stats')
|
RENDER_ROOT = DATA_DIR / 'render'
|
||||||
|
TILES_ROOT = DATA_DIR / 'tiles'
|
||||||
|
CACHE_ROOT = DATA_DIR / 'cache'
|
||||||
|
STATS_ROOT = DATA_DIR / 'stats'
|
||||||
|
|
||||||
|
if not DATA_DIR.exists():
|
||||||
|
DATA_DIR.mkdir(parents=True)
|
||||||
|
for subdir in (LOG_DIR, MEDIA_ROOT, SOURCES_ROOT, MAP_ROOT, RENDER_ROOT, TILES_ROOT, CACHE_ROOT, STATS_ROOT):
|
||||||
|
if not subdir.exists():
|
||||||
|
subdir.mkdir()
|
||||||
|
|
||||||
MEDIA_URL = '/media/'
|
MEDIA_URL = '/media/'
|
||||||
|
|
||||||
if not os.path.exists(DATA_DIR):
|
|
||||||
os.mkdir(DATA_DIR)
|
|
||||||
if not os.path.exists(LOG_DIR):
|
|
||||||
os.mkdir(LOG_DIR)
|
|
||||||
if not os.path.exists(MEDIA_ROOT):
|
|
||||||
os.mkdir(MEDIA_ROOT)
|
|
||||||
if not os.path.exists(SOURCES_ROOT):
|
|
||||||
os.mkdir(SOURCES_ROOT)
|
|
||||||
if not os.path.exists(MAP_ROOT):
|
|
||||||
os.mkdir(MAP_ROOT)
|
|
||||||
if not os.path.exists(RENDER_ROOT):
|
|
||||||
os.mkdir(RENDER_ROOT)
|
|
||||||
if not os.path.exists(TILES_ROOT):
|
|
||||||
os.mkdir(TILES_ROOT)
|
|
||||||
if not os.path.exists(CACHE_ROOT):
|
|
||||||
os.mkdir(CACHE_ROOT)
|
|
||||||
if not os.path.exists(STATS_ROOT):
|
|
||||||
os.mkdir(STATS_ROOT)
|
|
||||||
|
|
||||||
PUBLIC_EDITOR = config.getboolean('c3nav', 'editor', fallback=True)
|
PUBLIC_EDITOR = config.getboolean('c3nav', 'editor', fallback=True)
|
||||||
PUBLIC_BASE_MAPDATA = config.getboolean('c3nav', 'public_base_mapdata', fallback=False)
|
PUBLIC_BASE_MAPDATA = config.getboolean('c3nav', 'public_base_mapdata', fallback=False)
|
||||||
AUTO_PROCESS_UPDATES = config.getboolean('c3nav', 'auto_process_updates', fallback=True)
|
AUTO_PROCESS_UPDATES = config.getboolean('c3nav', 'auto_process_updates', fallback=True)
|
||||||
|
@ -75,8 +66,8 @@ if RANDOM_LOCATION_GROUPS:
|
||||||
if config.has_option('django', 'secret'):
|
if config.has_option('django', 'secret'):
|
||||||
SECRET_KEY = config.get('django', 'secret')
|
SECRET_KEY = config.get('django', 'secret')
|
||||||
else:
|
else:
|
||||||
SECRET_FILE = os.path.join(DATA_DIR, '.secret')
|
SECRET_FILE = DATA_DIR / '.secret'
|
||||||
if os.path.exists(SECRET_FILE):
|
if SECRET_FILE.exists():
|
||||||
with open(SECRET_FILE, 'r') as f:
|
with open(SECRET_FILE, 'r') as f:
|
||||||
SECRET_KEY = f.read().strip()
|
SECRET_KEY = f.read().strip()
|
||||||
else:
|
else:
|
||||||
|
@ -89,8 +80,8 @@ else:
|
||||||
if config.has_option('c3nav', 'tile_secret'):
|
if config.has_option('c3nav', 'tile_secret'):
|
||||||
SECRET_TILE_KEY = config.get('c3nav', 'tile_secret')
|
SECRET_TILE_KEY = config.get('c3nav', 'tile_secret')
|
||||||
else:
|
else:
|
||||||
SECRET_TILE_FILE = os.path.join(DATA_DIR, '.tile_secret')
|
SECRET_TILE_FILE = DATA_DIR / '.tile_secret'
|
||||||
if os.path.exists(SECRET_TILE_FILE):
|
if SECRET_TILE_FILE.exists():
|
||||||
with open(SECRET_TILE_FILE, 'r') as f:
|
with open(SECRET_TILE_FILE, 'r') as f:
|
||||||
SECRET_TILE_KEY = f.read().strip()
|
SECRET_TILE_KEY = f.read().strip()
|
||||||
else:
|
else:
|
||||||
|
@ -135,7 +126,7 @@ db_backend = config.get('database', 'backend', fallback='sqlite3')
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.' + db_backend,
|
'ENGINE': 'django.db.backends.' + db_backend,
|
||||||
'NAME': config.get('database', 'name', fallback=os.path.join(DATA_DIR, 'db.sqlite3')),
|
'NAME': config.get('database', 'name', fallback=DATA_DIR / 'db.sqlite3'),
|
||||||
'USER': config.get('database', 'user', fallback=''),
|
'USER': config.get('database', 'user', fallback=''),
|
||||||
'PASSWORD': config.get('database', 'password', fallback=''),
|
'PASSWORD': config.get('database', 'password', fallback=''),
|
||||||
'HOST': config.get('database', 'host', fallback=''),
|
'HOST': config.get('database', 'host', fallback=''),
|
||||||
|
@ -212,7 +203,7 @@ CELERY_RESULT_SERIALIZER = 'json'
|
||||||
TILE_CACHE_SERVER = config.get('c3nav', 'tile_cache_server', fallback=None)
|
TILE_CACHE_SERVER = config.get('c3nav', 'tile_cache_server', fallback=None)
|
||||||
|
|
||||||
# Internal settings
|
# Internal settings
|
||||||
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static.dist')
|
STATIC_ROOT = PROJECT_DIR / 'static.dist'
|
||||||
|
|
||||||
SESSION_COOKIE_NAME = 'c3nav_session'
|
SESSION_COOKIE_NAME = 'c3nav_session'
|
||||||
SESSION_COOKIE_DOMAIN = config.get('c3nav', 'session_cookie_domain', fallback=None)
|
SESSION_COOKIE_DOMAIN = config.get('c3nav', 'session_cookie_domain', fallback=None)
|
||||||
|
@ -325,7 +316,7 @@ REST_FRAMEWORK = {
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCALE_PATHS = (
|
LOCALE_PATHS = (
|
||||||
os.path.join(os.path.dirname(__file__), 'locale'),
|
PROJECT_DIR / 'locale',
|
||||||
)
|
)
|
||||||
|
|
||||||
LANGUAGES = [
|
LANGUAGES = [
|
||||||
|
@ -374,7 +365,7 @@ BOOTSTRAP3 = {
|
||||||
}
|
}
|
||||||
|
|
||||||
STATICFILES_DIRS = [
|
STATICFILES_DIRS = [
|
||||||
os.path.join(BASE_DIR, 'c3nav/static'),
|
BASE_DIR / 'c3nav' / 'static',
|
||||||
]
|
]
|
||||||
|
|
||||||
COMPRESS_PRECOMPILERS = (
|
COMPRESS_PRECOMPILERS = (
|
||||||
|
@ -452,7 +443,7 @@ LOGGING = {
|
||||||
'file': {
|
'file': {
|
||||||
'level': loglevel,
|
'level': loglevel,
|
||||||
'class': 'logging.FileHandler',
|
'class': 'logging.FileHandler',
|
||||||
'filename': os.path.join(LOG_DIR, 'c3nav.log'),
|
'filename': LOG_DIR / 'c3nav.log',
|
||||||
'formatter': 'default'
|
'formatter': 'default'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue