From c7adaf94b4dd0c7a2462bbd8eaf40694bb53d239 Mon Sep 17 00:00:00 2001 From: Mandel Olaiya Date: Sun, 26 Apr 2026 01:09:30 +0200 Subject: [PATCH] Fix Carbasa header overrides cleanly --- mandelstudio/settings/base.py | 33 ++++++++++++++++- .../templates/carbasa/headers/header.html | 35 ------------------- .../templates/carbasa/headers/mega.html | 2 -- .../templates/oxyan/headers/header.html | 4 +++ .../templates/oxyan/headers/mega.html | 4 +++ .../oxyan/partials/language_chooser.html | 1 - 6 files changed, 40 insertions(+), 39 deletions(-) delete mode 100644 mandelstudio/templates/carbasa/headers/header.html delete mode 100644 mandelstudio/templates/carbasa/headers/mega.html diff --git a/mandelstudio/settings/base.py b/mandelstudio/settings/base.py index 9447090..8466151 100644 --- a/mandelstudio/settings/base.py +++ b/mandelstudio/settings/base.py @@ -9,6 +9,7 @@ https://docs.djangoproject.com/en/2.0/ref/settings/ """ import importlib.util +import os import sys from pathlib import Path @@ -20,7 +21,11 @@ BASE_DIR = str(BASE_PATH) setup_search_paths("/etc/ocyan/", str(_project_app_path)) -from ocyan.main.settings import * # pylint:disable=W0401,W0614 +from ocyan.main.settings import * # noqa: F403,F405 # pylint:disable=W0401,W0614 # pyright: ignore[reportWildcardImportFromLibrary] +from ocyan.core.fender import config as ocyan_config + +# Keep existing database schemas stable across Django upgrades. +DEFAULT_AUTO_FIELD = "django.db.models.AutoField" INSTALLED_APPS = [ "mandelblog_content_guard.apps.MandelblogContentGuardConfig", @@ -60,6 +65,25 @@ _ensure_required_app( "ocyan.plugin.coyote", ) +def _ensure_installed_app(app_label: str, *, before: str | None = None) -> None: + """Ensure an app is present in INSTALLED_APPS with optional ordering.""" + if app_label in INSTALLED_APPS: + INSTALLED_APPS.remove(app_label) + if before and before in INSTALLED_APPS: + INSTALLED_APPS.insert(INSTALLED_APPS.index(before), app_label) + else: + INSTALLED_APPS.append(app_label) + + +# Production-clean: prefer the Carbasa webshop template package when Oscar is enabled. +# This guarantees that `carbasa/headers/*` resolves to the webshop templates (search, user bar, cart, megamenu). +_oscar_enabled = ocyan_config.is_webshop or any( + app == "ocyan.plugin.oscar" or app.startswith("ocyan.plugin.oscar_") + for app in INSTALLED_APPS +) +if _oscar_enabled and importlib.util.find_spec("ocyan.plugin.carbasa.webshop"): + _ensure_installed_app("ocyan.plugin.carbasa.webshop", before="ocyan.plugin.carbasa") + # Keep Carbasa/Coyote defaults stable even when plugin settings are not # injected early enough during startup on this deployment. OXYAN_HEADER_OPTIONS = globals().get( @@ -121,6 +145,13 @@ ACTIVE_VERTICAL = "agency" # Wagtail content internationalization in admin WAGTAIL_I18N_ENABLED = True WAGTAIL_CONTENT_LANGUAGES = LANGUAGES +WAGTAILADMIN_BASE_URL = os.environ.get("WAGTAILADMIN_BASE_URL", "http://127.0.0.1:8001") + +# Local dev convenience: allow Django's test client and common loopback hosts. +ALLOWED_HOSTS = list(globals().get("ALLOWED_HOSTS", [])) +for _host in ("localhost", "127.0.0.1", "0.0.0.0", "testserver"): + if _host not in ALLOWED_HOSTS: + ALLOWED_HOSTS.append(_host) CONTENT_GUARD_STRICT = True CONTENT_GUARD_BLOCK_MEDIUM = False diff --git a/mandelstudio/templates/carbasa/headers/header.html b/mandelstudio/templates/carbasa/headers/header.html deleted file mode 100644 index e923d9c..0000000 --- a/mandelstudio/templates/carbasa/headers/header.html +++ /dev/null @@ -1,35 +0,0 @@ -{% load i18n oxyan category_tags ocyan_main ocyanjson %} - -{# Project override: add the language chooser to the Carbasa (non-webshop) header. #} -
- -
- diff --git a/mandelstudio/templates/carbasa/headers/mega.html b/mandelstudio/templates/carbasa/headers/mega.html deleted file mode 100644 index abf26bc..0000000 --- a/mandelstudio/templates/carbasa/headers/mega.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends "carbasa/headers/header.html" %} - diff --git a/mandelstudio/templates/oxyan/headers/header.html b/mandelstudio/templates/oxyan/headers/header.html index 73bdd85..2c8d271 100644 --- a/mandelstudio/templates/oxyan/headers/header.html +++ b/mandelstudio/templates/oxyan/headers/header.html @@ -3,3 +3,7 @@ {% block append_header_block %} {% include "oxyan/partials/language_chooser.html" %} {% endblock append_header_block %} + +{% block language_chooser %} + {% include "oxyan/partials/language_chooser.html" %} +{% endblock language_chooser %} diff --git a/mandelstudio/templates/oxyan/headers/mega.html b/mandelstudio/templates/oxyan/headers/mega.html index 69fbff6..b0538bf 100644 --- a/mandelstudio/templates/oxyan/headers/mega.html +++ b/mandelstudio/templates/oxyan/headers/mega.html @@ -3,3 +3,7 @@ {% block append_header_block %} {% include "oxyan/partials/language_chooser.html" %} {% endblock append_header_block %} + +{% block language_chooser %} + {% include "oxyan/partials/language_chooser.html" %} +{% endblock language_chooser %} diff --git a/mandelstudio/templates/oxyan/partials/language_chooser.html b/mandelstudio/templates/oxyan/partials/language_chooser.html index f2140fc..ce00455 100644 --- a/mandelstudio/templates/oxyan/partials/language_chooser.html +++ b/mandelstudio/templates/oxyan/partials/language_chooser.html @@ -1,4 +1,3 @@ - {% load i18n static ocyanjson mandelstudio_i18n %} {% get_current_language as current_language %}