Files
mandelstudio/mandelstudio/settings/base.py
2026-04-09 00:42:40 +02:00

128 lines
3.6 KiB
Python

"""
Django settings for de tilde project.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""
import importlib.util
import sys
from pathlib import Path
from configtype.jsonconfig import setup_search_paths
_project_app_path = Path(__file__).parent.parent
BASE_PATH = _project_app_path.parent
BASE_DIR = str(BASE_PATH)
setup_search_paths("/etc/ocyan/", str(_project_app_path))
from ocyan.main.settings import * # pylint:disable=W0401,W0614
INSTALLED_APPS = [
"mandelblog_content_guard.apps.MandelblogContentGuardConfig",
"mandelstudio",
] + INSTALLED_APPS
# Route through the project URL layer so MandelStudio can override
# sitemap/robots behavior while still delegating the main Ocyan routes.
ROOT_URLCONF = "mandelstudio.urls"
def _ensure_required_app(*candidates):
"""Ensure required plugin apps remain enabled when /etc/ocyan config omits them."""
if any(app in INSTALLED_APPS for app in candidates):
return
for app in candidates:
if importlib.util.find_spec(app):
INSTALLED_APPS.append(app)
return
_ensure_required_app(
"ocyan.plugin.carbasa.carbasa",
"ocyan.plugin.carbasa",
)
_ensure_required_app(
"ocyan.plugin.coyote.coyote",
"ocyan.plugin.coyote",
)
# Keep Carbasa/Coyote defaults stable even when plugin settings are not
# injected early enough during startup on this deployment.
OXYAN_HEADER_OPTIONS = globals().get(
"OXYAN_HEADER_OPTIONS",
[
("basic", "Basic Header"),
("big", "Big Header"),
("mega", "Mega Header"),
],
)
COMPRESS_CACHE_KEY_FUNCTION = globals().get(
"COMPRESS_CACHE_KEY_FUNCTION",
"ocyan.plugin.coyote.utils.get_compressor_cache_key",
)
OXYAN_LAZY_THEME_DEFINITIONS = globals().get(
"OXYAN_LAZY_THEME_DEFINITIONS",
"ocyan.plugin.coyote.definitions.get_coyote_definitions",
)
# Enable request language negotiation.
if "django.middleware.locale.LocaleMiddleware" not in MIDDLEWARE:
if "django.contrib.sessions.middleware.SessionMiddleware" in MIDDLEWARE:
idx = (
MIDDLEWARE.index("django.contrib.sessions.middleware.SessionMiddleware") + 1
)
MIDDLEWARE.insert(idx, "django.middleware.locale.LocaleMiddleware")
else:
MIDDLEWARE.insert(0, "django.middleware.locale.LocaleMiddleware")
LANGUAGE_CODE = "nl"
LANGUAGES = [
("nl", "Nederlands"),
("en", "English"),
("de", "Deutsch"),
("fr", "Français"),
("es", "Español"),
("it", "Italiano"),
("pt", "Português"),
("ru", "Русский"),
]
STATIC_ROOT = str(BASE_PATH / "static")
MEDIA_ROOT = str(BASE_PATH / "media")
PRIVATE_MEDIA_ROOT = str(BASE_PATH / "private")
DATABASES = {
"default": {
"ENGINE": "ocyan.i18n.db.sqlite3",
"NAME": str(BASE_PATH / "db.sqlite3"),
}
}
SECRET_KEY = "xyh998+wzhzueld8u6=)l@imh^!07&c6i_hjn7=8=jl$8%z_4t"
# Template engine vertical preset
ACTIVE_VERTICAL = "agency"
# Wagtail content internationalization in admin
WAGTAIL_I18N_ENABLED = True
WAGTAIL_CONTENT_LANGUAGES = LANGUAGES
CONTENT_GUARD_STRICT = True
CONTENT_GUARD_BLOCK_MEDIUM = False
CONTENT_GUARD_LOCALES = [code for code, _label in LANGUAGES]
CONTENT_GUARD_REWRITE_ENABLED = True
CONTENT_GUARD_REWRITE_BACKEND = None
if "test" in sys.argv:
MIGRATION_MODULES = globals().get("MIGRATION_MODULES", {}).copy()
MIGRATION_MODULES["template_engine"] = (
"mandelstudio.test_migrations.template_engine"
)
TEST_RUNNER = "django.test.runner.DiscoverRunner"