From a26465cf1b2576d025d46855e92a70d202ecc70f Mon Sep 17 00:00:00 2001 From: Paul Schilling Date: Wed, 29 Jan 2025 14:12:01 +0100 Subject: [PATCH] [2969] Check for primary Klant backend in update_user_on_login signal --- src/open_inwoner/accounts/signals.py | 32 ++++++++++--------- src/open_inwoner/accounts/tests/test_auth.py | 6 ++++ .../cms/footer/tests/test_plugin.py | 2 +- src/open_inwoner/openklant/services.py | 4 ++- .../openklant/tests/test_signal.py | 7 +++- 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/open_inwoner/accounts/signals.py b/src/open_inwoner/accounts/signals.py index dac12d95a6..06bd5a4dd6 100644 --- a/src/open_inwoner/accounts/signals.py +++ b/src/open_inwoner/accounts/signals.py @@ -9,6 +9,8 @@ from open_inwoner.haalcentraal.models import HaalCentraalConfig from open_inwoner.haalcentraal.utils import update_brp_data_in_db from open_inwoner.kvk.client import KvKClient +from open_inwoner.openklant.constants import KlantenServiceType +from open_inwoner.openklant.models import KlantenSysteemConfig from open_inwoner.openklant.services import OpenKlant2Service, eSuiteKlantenService from open_inwoner.utils.logentry import user_action @@ -40,21 +42,21 @@ def update_user_on_login(sender, user, request, *args, **kwargs): if user.login_type is LoginTypeChoices.eherkenning: _update_eherkenning_user_from_kvk_api(user=user) - # OpenKlant2 - try: - service = OpenKlant2Service() - except Exception: - logger.error("OpenKlant2 service failed to build") - else: - _update_user_from_openklant2(user=user, service=service, request=request) - - # eSuite - try: - service = eSuiteKlantenService() - except Exception: - logger.error("eSuiteKlantenService failed to build") - else: - _update_user_from_esuite(user=user, service=service, request=request) + config = KlantenSysteemConfig.get_solo() + if config.primary_backend == KlantenServiceType.OPENKLANT2.value: + try: + service = OpenKlant2Service() + except Exception: + logger.error("OpenKlant2 service failed to build") + else: + _update_user_from_openklant2(user=user, service=service, request=request) + if config.primary_backend == KlantenServiceType.ESUITE.value: + try: + service = eSuiteKlantenService() + except Exception: + logger.error("eSuiteKlantenService failed to build") + else: + _update_user_from_esuite(user=user, service=service, request=request) def _update_user_from_openklant2( diff --git a/src/open_inwoner/accounts/tests/test_auth.py b/src/open_inwoner/accounts/tests/test_auth.py index 1718a5135d..f718657898 100644 --- a/src/open_inwoner/accounts/tests/test_auth.py +++ b/src/open_inwoner/accounts/tests/test_auth.py @@ -19,6 +19,8 @@ from open_inwoner.haalcentraal.tests.mixins import HaalCentraalMixin from open_inwoner.kvk.branches import get_kvk_branch_number from open_inwoner.kvk.tests.factories import CertificateFactory +from open_inwoner.openklant.constants import KlantenServiceType +from open_inwoner.openklant.models import KlantenSysteemConfig from open_inwoner.openklant.tests.data import MockAPIReadPatchData from open_inwoner.openzaak.models import OpenZaakConfig from open_inwoner.utils.tests.helpers import AssertTimelineLogMixin @@ -2040,6 +2042,10 @@ def setUpTestData(cls): config.enable_notification_channel_choice = True config.save() + klant_config = KlantenSysteemConfig.get_solo() + klant_config.primary_backend = KlantenServiceType.ESUITE.value + klant_config.save() + def test_update_hook_is_registered_on_login(self, m): connected_functions = [receiver[1]() for receiver in user_logged_in.receivers] self.assertIn(update_user_on_login, connected_functions) diff --git a/src/open_inwoner/cms/footer/tests/test_plugin.py b/src/open_inwoner/cms/footer/tests/test_plugin.py index 5c8550e833..69489a13ea 100644 --- a/src/open_inwoner/cms/footer/tests/test_plugin.py +++ b/src/open_inwoner/cms/footer/tests/test_plugin.py @@ -42,7 +42,7 @@ def test_form_link_is_shown_in_footer_when_has_configuration(self): self.assertFalse(klant_config.has_contactform_configuration(user=self.user)) esuite_config = ESuiteKlantConfig.get_solo() - ContactFormSubjectFactory(config=esuite_config) + ContactFormSubjectFactory(esuite_config=esuite_config) klant_config.register_contact_email = "example@example.com" klant_config.save() diff --git a/src/open_inwoner/openklant/services.py b/src/open_inwoner/openklant/services.py index bd17104e2f..93d3fd6daf 100644 --- a/src/open_inwoner/openklant/services.py +++ b/src/open_inwoner/openklant/services.py @@ -577,7 +577,9 @@ def _get_kcm_subject( esuite_subject_code = getattr(kcm.contactmoment, "onderwerp", "") try: - subject = ContactFormSubject.objects.get(esuite_subject_code=esuite_subject_code) + subject = ContactFormSubject.objects.get( + esuite_subject_code=esuite_subject_code + ) except ContactFormSubject.MultipleObjectsReturned as exc: logger.warning( "Multiple OIP subjects mapped to the same e-suite subject code for ", diff --git a/src/open_inwoner/openklant/tests/test_signal.py b/src/open_inwoner/openklant/tests/test_signal.py index 8b3c77e26c..428149d1d1 100644 --- a/src/open_inwoner/openklant/tests/test_signal.py +++ b/src/open_inwoner/openklant/tests/test_signal.py @@ -8,7 +8,8 @@ from open_inwoner.accounts.models import User from open_inwoner.accounts.tests.factories import UserFactory, eHerkenningUserFactory from open_inwoner.configurations.models import SiteConfiguration -from open_inwoner.openklant.models import ESuiteKlantConfig +from open_inwoner.openklant.constants import KlantenServiceType +from open_inwoner.openklant.models import ESuiteKlantConfig, KlantenSysteemConfig from open_inwoner.openklant.tests.data import KLANTEN_ROOT, MockAPIReadData from open_inwoner.openzaak.tests.helpers import generate_oas_component_cached from open_inwoner.utils.test import ( @@ -32,6 +33,10 @@ def setUpTestData(cls): config.enable_notification_channel_choice = True config.save() + klant_config = KlantenSysteemConfig.get_solo() + klant_config.primary_backend = KlantenServiceType.ESUITE.value + klant_config.save() + def setUp(self) -> None: super().setUp()