src/ej/settings/paths.py
import os
import pathlib
from boogie.configurations import PathsConf as Base, env
class PathsConf(Base):
BASE_DIR = REPO_DIR = pathlib.Path(__file__).parent.parent.parent.parent
ROOT_DIR = SRC_DIR = APPS_DIR = REPO_DIR / "src"
PROJECT_DIR = ROOT_DIR / "ej"
# Local paths
LOCAL_DIR = REPO_DIR / "local"
DB_DIR = LOCAL_DIR / "db"
MEDIA_ROOT = env(LOCAL_DIR / "media")
STATIC_ROOT = env(LOCAL_DIR / "static")
FRAGMENTS_DIR = LOCAL_DIR / "fragments"
PAGES_DIR = LOCAL_DIR / "pages"
LOG_DIR = LOCAL_DIR / "logs"
LOG_FILE_PATH = LOG_DIR / "logfile.log"
ROOT_TEMPLATE_DIR = PROJECT_DIR / "templates"
# Frontend paths
LIB_DIR = REPO_DIR / "lib"
LIB_BUILD = LIB_DIR / "build"
THEMES_DIR = LIB_DIR / "themes"
def finalize(self, settings):
"""
Create missing paths.
"""
for path in [
self.LOCAL_DIR,
self.DB_DIR,
self.MEDIA_ROOT,
self.STATIC_ROOT,
self.LOG_DIR,
self.LIB_DIR,
self.LIB_BUILD,
]:
if not os.path.exists(path):
mkdir_recursive(path)
return super().finalize(settings)
def get_staticfiles_dirs(self, repo_dir):
dirs = [repo_dir / "lib/build", repo_dir / "lib/assets"]
if self.EJ_THEME:
path = self.EJ_THEME_PATH / "assets"
if path.exists():
dirs.insert(0, path)
return dirs
def get_django_templates_dirs(self):
dirs = [self.ROOT_TEMPLATE_DIR / "django"]
if self.EJ_THEME:
dirs.insert(0, self.EJ_THEME_PATH / "templates" / "django")
return dirs
def get_jinja_templates_dirs(self):
dirs = [self.ROOT_TEMPLATE_DIR / "jinja2"]
if self.EJ_THEME:
dirs.insert(0, self.EJ_THEME_PATH / "templates" / "jinja2")
return dirs
def get_ej_theme_path(self):
if os.path.sep in self.EJ_THEME:
return self.EJ_THEME
else:
return self.THEMES_DIR / self.EJ_THEME
def mkdir_recursive(path):
# TODO: implement recursive dir creation.
print(f"making required directory: {path}")
os.mkdir(path)