From 04e75ec7a34df118fd6c8bca712b4939eff78be0 Mon Sep 17 00:00:00 2001 From: Ryan Westfall Date: Sun, 6 Sep 2026 20:48:00 -0500 Subject: [PATCH] fix CI --- site/print_forge/settings/base.py | 34 +++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/site/print_forge/settings/base.py b/site/print_forge/settings/base.py index 59afe81..96aac06 100644 --- a/site/print_forge/settings/base.py +++ b/site/print_forge/settings/base.py @@ -128,19 +128,31 @@ CSRF_TRUSTED_ORIGINS = build_csrf_trusted_origins( from django.core.exceptions import ImproperlyConfigured # Catalog feature flags. Secret env is the source of truth. -# Dev/test default ON so the template is a working seed; prod/beta secrets +# Dev default ON so the template is a working seed; prod/beta secrets # must set each flag explicitly (see scripts/validate-env.sh). +# Tests always enable the full catalog. compose / .env pin this client's +# purchased add-ons (FEATURE_BLOG=false, ...); leaving those in place would +# omit apps from INSTALLED_APPS and break discovery of blog.tests, etc. +_testing = "test" in sys.argv _feature_default = os.environ.get("DJANGO_ENV", "dev").lower() not in {"prod", "beta"} -FEATURE_EMAIL_SMS = env_bool("FEATURE_EMAIL_SMS", _feature_default) -FEATURE_DIRECT_MAIL = env_bool("FEATURE_DIRECT_MAIL", _feature_default) -FEATURE_BLOG = env_bool("FEATURE_BLOG", _feature_default) -FEATURE_PAYMENTS = env_bool("FEATURE_PAYMENTS", _feature_default) -FEATURE_SOCIAL = env_bool("FEATURE_SOCIAL", _feature_default) -FEATURE_SOCIAL_AI = env_bool("FEATURE_SOCIAL_AI", _feature_default) -FEATURE_SHOP = env_bool("FEATURE_SHOP", _feature_default) -FEATURE_POS_SYNC = env_bool("FEATURE_POS_SYNC", _feature_default) -FEATURE_EVENTS = env_bool("FEATURE_EVENTS", _feature_default) -FEATURE_SHIPPING = env_bool("FEATURE_SHIPPING", _feature_default) + + +def _feature_flag(key: str) -> bool: + if _testing: + return True + return env_bool(key, _feature_default) + + +FEATURE_EMAIL_SMS = _feature_flag("FEATURE_EMAIL_SMS") +FEATURE_DIRECT_MAIL = _feature_flag("FEATURE_DIRECT_MAIL") +FEATURE_BLOG = _feature_flag("FEATURE_BLOG") +FEATURE_PAYMENTS = _feature_flag("FEATURE_PAYMENTS") +FEATURE_SOCIAL = _feature_flag("FEATURE_SOCIAL") +FEATURE_SOCIAL_AI = _feature_flag("FEATURE_SOCIAL_AI") +FEATURE_SHOP = _feature_flag("FEATURE_SHOP") +FEATURE_POS_SYNC = _feature_flag("FEATURE_POS_SYNC") +FEATURE_EVENTS = _feature_flag("FEATURE_EVENTS") +FEATURE_SHIPPING = _feature_flag("FEATURE_SHIPPING") if FEATURE_PAYMENTS and not FEATURE_EMAIL_SMS: raise ImproperlyConfigured("FEATURE_PAYMENTS requires FEATURE_EMAIL_SMS")