Skip to content

Commit

Permalink
[#2266] Refactor setup to use env variables directly
Browse files Browse the repository at this point in the history
  • Loading branch information
pi-sigma committed Apr 11, 2024
1 parent 6d713b2 commit f1fb73d
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 179 deletions.
92 changes: 11 additions & 81 deletions src/open_inwoner/conf/app/setup_configuration.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from ..utils import config

SETUP_CONFIGURATION_STEPS = [
"open_inwoner.configurations.bootstrap.zgw.ZakenAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.zgw.CatalogiAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.zgw.DocumentenAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.zgw.FormulierenAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.zgw.ZGWAPIsConfigurationStep",
"open_inwoner.configurations.bootstrap.kic.KlantenAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.kic.ContactmomentenAPIConfigurationStep",
"open_inwoner.configurations.bootstrap.kic.KICAPIsConfigurationStep",
# "open_inwoner.configurations.bootstrap.zgw.ZakenAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.zgw.CatalogiAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.zgw.DocumentenAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.zgw.FormulierenAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.zgw.ZGWAPIsConfigurationStep",
# "open_inwoner.configurations.bootstrap.kic.KlantenAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.kic.ContactmomentenAPIConfigurationStep",
# "open_inwoner.configurations.bootstrap.kic.KICAPIsConfigurationStep",
"open_inwoner.configurations.bootstrap.siteconfig.SiteConfigurationStep",
]
OIP_ORGANIZATION = config("OIP_ORGANIZATION", "")
Expand Down Expand Up @@ -51,7 +51,9 @@
"ZGW_CONFIG_DOCUMENT_MAX_CONFIDENTIALITY", None
)
ZGW_CONFIG_ACTION_REQUIRED_DEADLINE_DAYS = config("ACTION_REQUIRED_DEADLINE_DAYS", None)
ZGW_CONFIG_ALLOWED_FILE_EXTENSIONS = config("ZGW_CONFIG_ALLOWED_FILE_EXTENSIONS", None)
ZGW_CONFIG_ALLOWED_FILE_EXTENSIONS = config(
"ZGW_CONFIG_ALLOWED_FILE_EXTENSIONS", "", split=True
)
ZGW_CONFIG_MIJN_AANVRAGEN_TITLE_TEXT = config(
"ZGW_CONFIG_MIJN_AANVRAGEN_TITLE_TEXT", None
)
Expand Down Expand Up @@ -109,77 +111,5 @@
#
SITE_CONFIG_ENABLE = config("SITE_CONFIG_ENABLE", True)
SITE_NAME = config("SITE_NAME", None)
SITE_PRIMARY_COLOR = config("SITE_PRIMARY_COLOR", None)
SITE_SECONDARY_COLOR = config("SITE_SECONDARY_COLOR", None)
SITE_ACCENT_COLOR = config("SITE_ACCENT_COLOR", None)
SITE_PRIMARY_FONT_COLOR = config("SITE_PRIMARY_FONT_COLOR", None)
SITE_SECONDARY_FONT_COLOR = config("SITE_SECONDARY_FONT_COLOR", None)
SITE_ACCENT_FONT_COLOR = config("SITE_ACCENT_FONT_COLOR", None)
SITE_WARNING_BANNER_ENABLED = config("SITE_WARNING_BANNER_ENABLED", None)
SITE_WARNING_BANNER_TEXT = config("SITE_WARNING_BANNER_TEXT", None)
SITE_WARNING_BANNER_BACKGROUND_COLOR = config(
"SITE_WARNING_BANNER_BACKGROUND_COLOR", None
)
SITE_WARNING_BANNER_FONT_COLOR = config("SITE_WARNING_BANNER_FONT_COLOR", None)
SITE_HERO_IMAGE_LOGIN = config("SITE_HERO_IMAGE_LOGIN", None)
SITE_LOGIN_SHOW = config("SITE_LOGIN_SHOW", None)
SITE_LOGIN_ALLOW_REGISTRATION = config("SITE_LOGIN_ALLOW_REGISTRATION", None)
SITE_LOGIN_2FA_SMS = config("SITE_LOGIN_2FA_SMS", None)
SITE_LOGIN_TEXT = config("SITE_LOGIN_TEXT", None)
SITE_REGISTRATION_TEXT = config("SITE_REGISTRATION_TEXT", None)
SITE_HOME_WELCOME_TITLE = config("SITE_HOME_WELCOME_TITLE", None)
SITE_HOME_WELCOME_INTRO = config("SITE_HOME_WELCOME_INTRO", None)
SITE_HOME_THEME_TITLE = config("SITE_HOME_THEME_TITLE", None)
SITE_HOME_THEME_INTRO = config("SITE_HOME_THEME_INTRO", None)
SITE_THEME_TITLE = config("SITE_THEME_TITLE", None)
SITE_THEME_INTRO = config("SITE_THEME_INTRO", None)
SITE_HOME_MAP_TITLE = config("SITE_HOME_MAP_TITLE", None)
SITE_HOME_MAP_INTRO = config("SITE_HOME_MAP_INTRO", None)
SITE_HOME_QUESTIONNAIRE_TITLE = config("SITE_HOME_QUESTIONNAIRE_TITLE", None)
SITE_HOME_QUESTIONNAIRE_INTRO = config("SITE_HOME_QUESTIONNAIRE_INTRO", None)
SITE_HOME_PRODUCT_FINDER_TITLE = config("SITE_HOME_PRODUCT_FINDER_TITLE", None)
SITE_HOME_PRODUCT_FINDER_INTRO = config("SITE_HOME_PRODUCT_FINDER_INTRO", None)
SITE_SELECT_QUESTIONNAIRE_TITLE = config("SITE_SELECT_QUESTIONNAIRE_TITLE", None)
SITE_SELECT_QUESTIONNAIRE_INTRO = config("SITE_SELECT_QUESTIONNAIRE_INTRO", None)
SITE_PLANS_INTRO = config("SITE_PLANS_INTRO", None)
SITE_PLANS_NO_PLANS_MESSAGE = config("SITE_PLANS_NO_PLANS_MESSAGE", None)
SITE_PLANS_EDIT_MESSAGE = config("SITE_PLANS_EDIT_MESSAGE", None)
SITE_FOOTER_LOGO_TITLE = config("SITE_FOOTER_LOGO_TITLE", None)
SITE_FOOTER_LOGO_URL = config("SITE_FOOTER_LOGO_URL", None)
SITE_HOME_HELP_TEXT = config("SITE_HOME_HELP_TEXT", None)
SITE_THEME_HELP_TEXT = config("SITE_THEME_HELP_TEXT", None)
SITE_PRODUCT_HELP_TEXT = config("SITE_PRODUCT_HELP_TEXT", None)
SITE_SEARCH_HELP_TEXT = config("SITE_SEARCH_HELP_TEXT", None)
SITE_ACCOUNT_HELP_TEXT = config("SITE_ACCOUNT_HELP_TEXT", None)
SITE_QUESTIONNAIRE_HELP_TEXT = config("SITE_QUESTIONNAIRE_HELP_TEXT", None)
SITE_PLAN_HELP_TEXT = config("SITE_PLAN_HELP_TEXT", None)
SITE_SEARCH_FILTER_CATEGORIES = config("SITE_SEARCH_FILTER_CATEGORIES", None)
SITE_SEARCH_FILTER_TAGS = config("SITE_SEARCH_FILTER_TAGS", None)
SITE_SEARCH_FILTER_ORGANIZATIONS = config("SITE_SEARCH_FILTER_ORGANIZATIONS", None)
SITE_EMAIL_NEW_MESSAGE = config("SITE_EMAIL_NEW_MESSAGE", None)
SITE_RECIPIENTS_EMAIL_DIGEST = config("SITE_RECIPIENTS_EMAIL_DIGEST", None)
SITE_CONTACT_PHONENUMBER = config("SITE_CONTACT_PHONENUMBER", None)
SITE_CONTACT_PAGE = config("SITE_CONTACT_PAGE", None)
SITE_GTM_CODE = config("SITE_GTM_CODE", None)
SITE_GA_CODE = config("SITE_GA_CODE", None)
SITE_MATOMO_URL = config("SITE_MATOMO_URL", None)
SITE_MATOMO_SITE_ID = config("SITE_MATOMO_SITE_ID", None)
SITE_SITEIMPROVE_ID = config("SITE_SITEIMPROVE_ID", None)
SITE_COOKIE_INFO_TEXT = config("SITE_COOKIE_INFO_TEXT", None)
SITE_COOKIE_LINK_TEXT = config("SITE_COOKIE_LINK_TEXT", None)
SITE_COOKIE_LINK_URL = config("SITE_COOKIE_LINK_URL", None)
SITE_KCM_SURVEY_LINK_TEXT = config("SITE_KCM_SURVEY_LINK_TEXT", None)
SITE_KCM_SURVEY_LINK_URL = config("SITE_KCM_SURVEY_LINK_URL", None)
SITE_OPENID_CONNECT_LOGIN_TEXT = config("SITE_OPENID_CONNECT_LOGIN_TEXT", None)
SITE_OPENID_DISPLAY = config("SITE_OPENID_DISPLAY", None)
SITE_REDIRECT_TO = config("SITE_REDIRECT_TO", None)
SITE_ALLOW_MESSAGES_FILE_SHARING = config("SITE_ALLOW_MESSAGES_FILE_SHARING", None)
SITE_HIDE_CATEGORIES_FROM_ANONYMOUS_USERS = config(
"SITE_HIDE_CATEGORIES_FROM_ANONYMOUS_USERS", None
)
SITE_HIDE_SEARCH_FROM_ANONYMOUS_USERS = config(
"SITE_HIDE_SEARCH_FROM_ANONYMOUS_USERS", None
)
SITE_DISPLAY_SOCIAL = config("SITE_DISPLAY_SOCIAL", None)
SITE_THEME_STYLESHEET = config("SITE_THEME_STYLESHEET", None)
SITE_EHERKENNING_ENABLED = config("SITE_EHERKENNING_ENABLED", None)
17 changes: 12 additions & 5 deletions src/open_inwoner/configurations/bootstrap/siteconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from django_setup_configuration.configuration import BaseConfigurationStep

from open_inwoner.conf.utils import config
from open_inwoner.configurations.models import SiteConfiguration


Expand All @@ -21,7 +22,7 @@ def is_configured(self):
return all((getattr(settings, required) for required in self.required_settings))

def configure(self):
config = SiteConfiguration.get_solo()
siteconfig = SiteConfiguration.get_solo()

setting_to_config = {
"SITE_NAME": "name",
Expand Down Expand Up @@ -70,7 +71,6 @@ def configure(self):
"SITE_SEARCH_FILTER_TAGS": "search_filter_tags",
"SITE_SEARCH_FILTER_ORGANIZATIONS": "search_filter_organizations",
"SITE_EMAIL_NEW_MESSAGE": "email_new_message",
"SITE_RECIPIENTS_EMAIL_DIGEST": "recipients_email_digest",
"SITE_CONTACT_PHONENUMBER": "contact_phonenumber",
"SITE_CONTACT_PAGE": "contact_page",
"SITE_GTM_CODE": "gtm_code",
Expand All @@ -94,10 +94,17 @@ def configure(self):
}

for key, value in setting_to_config.items():
setting = getattr(settings, key)
setting = config(key, default=None)
if setting is not None:
setattr(config, value, setting)
config.save()
setattr(siteconfig, value, setting)

# deal with variables that require transformation
recipients_email_digest = config(
"SITE_RECIPIENTS_EMAIL_DIGEST", None, split=True
)
setattr(siteconfig, "recipients_email_digest", recipients_email_digest)

siteconfig.save()

def test_configuration(self):
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from unittest.mock import patch

from django.core.exceptions import ValidationError
from django.core.management import call_command
from django.test import TestCase, override_settings

from open_inwoner.configurations.choices import ColorTypeChoices
Expand All @@ -7,84 +10,83 @@
from ...bootstrap.siteconfig import SiteConfigurationStep


@override_settings(
SITE_NAME="My site",
SITE_SECONDARY_COLOR="#000000",
SITE_ACCENT_COLOR="#000000",
SITE_PRIMARY_FONT_COLOR="#111111",
SITE_SECONDARY_FONT_COLOR="#222222",
SITE_ACCENT_FONT_COLOR="#333333",
SITE_WARNING_BANNER_ENABLED="True",
SITE_WARNING_BANNER_TEXT="warning banner text",
SITE_WARNING_BANNER_BACKGROUND_COLOR="#444444",
SITE_WARNING_BANNER_FONT_COLOR="#555555",
SITE_LOGIN_SHOW=False,
SITE_LOGIN_ALLOW_REGISTRATION=True,
SITE_LOGIN_2FA_SMS=True,
SITE_LOGIN_TEXT="login text",
SITE_REGISTRATION_TEXT="registration text",
SITE_HOME_WELCOME_TITLE="welcome title",
SITE_HOME_WELCOME_INTRO="welcome intro",
SITE_HOME_THEME_TITLE="home theme title",
SITE_HOME_THEME_INTRO="home theme intro",
SITE_THEME_TITLE="theme title",
SITE_THEME_INTRO="theme intro",
SITE_HOME_MAP_TITLE="home map title",
SITE_HOME_MAP_INTRO="home map intro",
SITE_HOME_QUESTIONNAIRE_TITLE="home questionnaire title",
SITE_HOME_QUESTIONNAIRE_INTRO="home questionnaire intro",
SITE_HOME_PRODUCT_FINDER_TITLE="home product finder title",
SITE_HOME_PRODUCT_FINDER_INTRO="home product finder intro",
SITE_SELECT_QUESTIONNAIRE_TITLE="select questionnaire title",
SITE_SELECT_QUESTIONNAIRE_INTRO="select questionnaire intro",
SITE_PLANS_INTRO="plans intro",
SITE_PLANS_NO_PLANS_MESSAGE="plans no plans_message",
SITE_PLANS_EDIT_MESSAGE="plans edit message",
SITE_FOOTER_LOGO_TITLE="footer logo title",
SITE_FOOTER_LOGO_URL="footer logo url",
SITE_HOME_HELP_TEXT="home help text",
SITE_THEME_HELP_TEXT="theme help text",
SITE_PRODUCT_HELP_TEXT="product help text",
SITE_SEARCH_HELP_TEXT="search help text",
SITE_ACCOUNT_HELP_TEXT="account help text",
SITE_QUESTIONNAIRE_HELP_TEXT="questionnaire help text",
SITE_PLAN_HELP_TEXT="plan help text",
SITE_SEARCH_FILTER_CATEGORIES=False,
SITE_SEARCH_FILTER_TAGS=False,
SITE_SEARCH_FILTER_ORGANIZATIONS=False,
SITE_EMAIL_NEW_MESSAGE=False,
SITE_RECIPIENTS_EMAIL_DIGEST=["[email protected]", "[email protected]"],
SITE_CONTACT_PHONENUMBER="12345",
SITE_CONTACT_PAGE="https://test.test",
SITE_GTM_CODE="gtm code",
SITE_GA_CODE="ga code",
SITE_MATOMO_URL="matomo url",
SITE_MATOMO_SITE_ID=88,
SITE_SITEIMPROVE_ID="88",
SITE_COOKIE_INFO_TEXT="cookie info text",
SITE_COOKIE_LINK_TEXT="cookie link text",
SITE_COOKIE_LINK_URL="cookie link url",
SITE_KCM_SURVEY_LINK_TEXT="kcm survey link text",
SITE_KCM_SURVEY_LINK_URL="kcm survey link url",
SITE_OPENID_CONNECT_LOGIN_TEXT="openid connect login_text",
SITE_OPENID_DISPLAY="openid display",
SITE_REDIRECT_TO="redirect to",
SITE_ALLOW_MESSAGES_FILE_SHARING=False,
SITE_HIDE_CATEGORIES_FROM_ANONYMOUS_USERS=True,
SITE_HIDE_SEARCH_FROM_ANONYMOUS_USERS=True,
SITE_DISPLAY_SOCIAL=False,
SITE_EHERKENNING_ENABLED=True,
)
class SiteConfigurationSetupTest(TestCase):
def test_site_configure(self):
configuration_step = SiteConfigurationStep()

configuration_step.configure()
patch_dict = {
"SITE_NAME": "My site",
"SITE_SECONDARY_COLOR": "#000000",
"SITE_ACCENT_COLOR": "#000000",
"SITE_PRIMARY_FONT_COLOR": "#111111",
"SITE_SECONDARY_FONT_COLOR": "#222222",
"SITE_ACCENT_FONT_COLOR": "#333333",
"SITE_WARNING_BANNER_ENABLED": "True",
"SITE_WARNING_BANNER_TEXT": "warning banner text",
"SITE_WARNING_BANNER_BACKGROUND_COLOR": "#444444",
"SITE_WARNING_BANNER_FONT_COLOR": "#555555",
"SITE_LOGIN_SHOW": "False",
"SITE_LOGIN_ALLOW_REGISTRATION": "True",
"SITE_LOGIN_2FA_SMS": "True",
"SITE_LOGIN_TEXT": "login text",
"SITE_REGISTRATION_TEXT": "registration text",
"SITE_HOME_WELCOME_TITLE": "welcome title",
"SITE_HOME_WELCOME_INTRO": "welcome intro",
"SITE_HOME_THEME_TITLE": "home theme title",
"SITE_HOME_THEME_INTRO": "home theme intro",
"SITE_THEME_TITLE": "theme title",
"SITE_THEME_INTRO": "theme intro",
"SITE_HOME_MAP_TITLE": "home map title",
"SITE_HOME_MAP_INTRO": "home map intro",
"SITE_HOME_QUESTIONNAIRE_TITLE": "home questionnaire title",
"SITE_HOME_QUESTIONNAIRE_INTRO": "home questionnaire intro",
"SITE_HOME_PRODUCT_FINDER_TITLE": "home product finder title",
"SITE_HOME_PRODUCT_FINDER_INTRO": "home product finder intro",
"SITE_SELECT_QUESTIONNAIRE_TITLE": "select questionnaire title",
"SITE_SELECT_QUESTIONNAIRE_INTRO": "select questionnaire intro",
"SITE_PLANS_INTRO": "plans intro",
"SITE_PLANS_NO_PLANS_MESSAGE": "plans no plans_message",
"SITE_PLANS_EDIT_MESSAGE": "plans edit message",
"SITE_FOOTER_LOGO_TITLE": "footer logo title",
"SITE_FOOTER_LOGO_URL": "footer logo url",
"SITE_HOME_HELP_TEXT": "home help text",
"SITE_THEME_HELP_TEXT": "theme help text",
"SITE_PRODUCT_HELP_TEXT": "product help text",
"SITE_SEARCH_HELP_TEXT": "search help text",
"SITE_ACCOUNT_HELP_TEXT": "account help text",
"SITE_QUESTIONNAIRE_HELP_TEXT": "questionnaire help text",
"SITE_PLAN_HELP_TEXT": "plan help text",
"SITE_SEARCH_FILTER_CATEGORIES": "False",
"SITE_SEARCH_FILTER_TAGS": "False",
"SITE_SEARCH_FILTER_ORGANIZATIONS": "False",
"SITE_EMAIL_NEW_MESSAGE": "False",
"SITE_RECIPIENTS_EMAIL_DIGEST": "[email protected],[email protected]",
"SITE_CONTACT_PHONENUMBER": "12345",
"SITE_CONTACT_PAGE": "https://test.test",
"SITE_GTM_CODE": "gtm code",
"SITE_GA_CODE": "ga code",
"SITE_MATOMO_URL": "matomo url",
"SITE_MATOMO_SITE_ID": "88",
"SITE_SITEIMPROVE_ID": "88",
"SITE_COOKIE_INFO_TEXT": "cookie info text",
"SITE_COOKIE_LINK_TEXT": "cookie link text",
"SITE_COOKIE_LINK_URL": "cookie link url",
"SITE_KCM_SURVEY_LINK_TEXT": "kcm survey link text",
"SITE_KCM_SURVEY_LINK_URL": "kcm survey link url",
"SITE_OPENID_CONNECT_LOGIN_TEXT": "openid connect login_text",
"SITE_OPENID_DISPLAY": "openid display",
"SITE_REDIRECT_TO": "redirect to",
"SITE_ALLOW_MESSAGES_FILE_SHARING": "False",
"SITE_HIDE_CATEGORIES_FROM_ANONYMOUS_USERS": "True",
"SITE_HIDE_SEARCH_FROM_ANONYMOUS_USERS": "True",
"SITE_DISPLAY_SOCIAL": "False",
"SITE_EHERKENNING_ENABLED": "True",
}
with patch.dict("os.environ", patch_dict):
args = []
opts = {"overwrite": True}
call_command("setup_configuration", *args, **opts)

config = SiteConfiguration.get_solo()

self.assertTrue(configuration_step.is_configured())

self.assertEqual(config.name, "My site")
self.assertEqual(config.secondary_color, "#000000"),
self.assertEqual(config.accent_color, "#000000"),
Expand Down Expand Up @@ -158,19 +160,13 @@ def test_site_configure(self):
self.assertFalse(config.display_social),
self.assertTrue(config.eherkenning_enabled),

@override_settings(
SITE_NAME="My site",
SITE_SECONDARY_COLOR="#000000",
SITE_ACCENT_COLOR="#000000",
SITE_PRIMARY_FONT_COLOR=None,
SITE_SECONDARY_FONT_COLOR=None,
SITE_ACCENT_FONT_COLOR=None,
SITE_WARNING_BANNER_ENABLED=None,
)
def test_site_configure_use_defaults(self):
configuration_step = SiteConfigurationStep()
patch_dict = {}

configuration_step.configure()
with patch.dict("os.environ", patch_dict):
args = []
opts = {"overwrite": True}
call_command("setup_configuration", *args, **opts)

config = SiteConfiguration.get_solo()

Expand All @@ -182,6 +178,7 @@ def test_site_configure_use_defaults(self):

@override_settings(
SITE_NAME=None,
SITE_PRIMARY_COLOR="#000000",
SITE_SECONDARY_COLOR="#000000",
SITE_ACCENT_COLOR="#111111",
)
Expand All @@ -192,14 +189,15 @@ def test_site_not_configured(self):

self.assertFalse(configuration_step.is_configured())

@override_settings(
SITE_NAME="My site",
SITE_SECONDARY_COLOR="#000000",
SITE_ACCENT_COLOR="#111111",
SITE_LOGIN_SHOW="Should be boolean",
)
def test_site_configure_error(self):
configuration_step = SiteConfigurationStep()

patch_dict = {
"SITE_NAME": "My site",
"SITE_SECONDARY_COLOR": "#000000",
"SITE_ACCENT_COLOR": "#000000",
"SITE_LOGIN_SHOW": "Should be boolean",
}
with self.assertRaises(ValidationError):
configuration_step.configure()
with patch.dict("os.environ", patch_dict):
args = []
opts = {"overwrite": True}
call_command("setup_configuration", *args, **opts)

0 comments on commit f1fb73d

Please sign in to comment.