Skip to content

Commit

Permalink
[#2975] Move option to fetch eHerkenning zaken with RSIN to ZGW API g…
Browse files Browse the repository at this point in the history
…roup config
  • Loading branch information
Paul Schilling committed Jan 24, 2025
1 parent 1d57159 commit 8d18258
Show file tree
Hide file tree
Showing 13 changed files with 109 additions and 37 deletions.
8 changes: 6 additions & 2 deletions src/open_inwoner/cms/cases/views/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ def get_submissions_for_api_group(
raise ValueError(f"{group} has no `forms_client`")

return group.forms_client.fetch_open_submissions(
**get_user_fetch_parameters(self.request, check_rsin=False)
**get_user_fetch_parameters(
self.request, use_rsin=group.fetch_eherkenning_zaken_with_rsin
)
)

def get_submissions(self) -> list[SubmissionWithApiGroup]:
Expand Down Expand Up @@ -192,7 +194,9 @@ def get_cases(self) -> list[ZaakWithApiGroup]:

def _get_cases_for_api_group(self, group: ZGWApiGroupConfig) -> list[Zaak]:
raw_cases = group.zaken_client.fetch_cases(
**get_user_fetch_parameters(self.request)
**get_user_fetch_parameters(
self.request, use_rsin=group.fetch_eherkenning_zaken_with_rsin
)
)
resolved_cases = self.resolve_cases(raw_cases, group)

Expand Down
1 change: 0 additions & 1 deletion src/open_inwoner/configurations/bootstrap/zgw.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ class Meta:
"max_upload_size",
"skip_notification_statustype_informeren",
"reformat_esuite_zaak_identificatie",
"fetch_eherkenning_zaken_with_rsin",
"derive_zaak_titel_from",
"order_statuses_by_date_set",
"title_text",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ openzaak_config:
max_upload_size: 50
skip_notification_statustype_informeren: false
reformat_esuite_zaak_identificatie: true
fetch_eherkenning_zaken_with_rsin: false
derive_zaak_titel_from: zaaktype_omschrijving
order_statuses_by_date_set: false
title_text: title text from setup configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ openzaak_config:
max_upload_size: 50
skip_notification_statustype_informeren: false
reformat_esuite_zaak_identificatie: true
fetch_eherkenning_zaken_with_rsin: false
derive_zaak_titel_from: zaaktype_omschrijving
order_statuses_by_date_set: false
title_text: title text from setup configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ openzaak_config:
max_upload_size: 50
skip_notification_statustype_informeren: false
reformat_esuite_zaak_identificatie: true
fetch_eherkenning_zaken_with_rsin: false
derive_zaak_titel_from: zaaktype_omschrijving
order_statuses_by_date_set: false
title_text: title text from setup configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ def assert_openzaak_config_defaults(self):
self.assertEqual(config.enable_categories_filtering_with_zaken, False)
self.assertEqual(config.skip_notification_statustype_informeren, False)
self.assertEqual(config.reformat_esuite_zaak_identificatie, False)
self.assertEqual(config.fetch_eherkenning_zaken_with_rsin, False)

def test_configure_full_sets_the_correct_fields(self):
execute_single_step(
Expand Down Expand Up @@ -120,7 +119,6 @@ def test_configure_full_sets_the_correct_fields(self):
self.assertEqual(config.enable_categories_filtering_with_zaken, True)
self.assertEqual(config.skip_notification_statustype_informeren, False)
self.assertEqual(config.reformat_esuite_zaak_identificatie, True)
self.assertEqual(config.fetch_eherkenning_zaken_with_rsin, False)

def test_configure_raises_on_missing_groups(self):
with self.assertRaises(PrerequisiteFailed):
Expand Down
1 change: 0 additions & 1 deletion src/open_inwoner/openzaak/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ class OpenZaakConfigAdmin(SingletonModelAdmin):
"fields": [
"skip_notification_statustype_informeren",
"reformat_esuite_zaak_identificatie",
"fetch_eherkenning_zaken_with_rsin",
"derive_zaak_titel_from",
],
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Generated by Django 4.2.16 on 2025-01-23 11:13

import logging

from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.db import migrations, models

logger = logging.getLogger(__name__)


def migrate_fetch_eherkenning_zaken_with_rsin(apps, _):
OpenZaakConfig = apps.get_model("openzaak", "OpenZaakConfig")
ZGWApiGroupConfig = apps.get_model("openzaak", "ZGWApiGroupConfig")

try:
zgw_group_config = ZGWApiGroupConfig.objects.get()
except ObjectDoesNotExist:
logger.info(
"No zgw_api_group_config found. "
"Skipping migration of fetch_eherkenning_zaken_with_rsin"
)
return
except MultipleObjectsReturned:
logger.info(
"Multiple zgw_api_group_config instances found. "
"Skipping migration of fetch_eherkenning_zaken_with_rsin"
)
return

zaak_config = OpenZaakConfig.objects.first()

zgw_group_config.fetch_eherkenning_zaken_with_rsin = (
zaak_config.fetch_eherkenning_zaken_with_rsin
)
zgw_group_config.save()


class Migration(migrations.Migration):

dependencies = [
("openzaak", "0059_openzaakconfig_show_cases_without_status"),
]

operations = [
migrations.AddField(
model_name="zgwapigroupconfig",
name="fetch_eherkenning_zaken_with_rsin",
field=models.BooleanField(
default=False,
help_text="If enabled, Zaken for eHerkenning users are fetched using the company RSIN (Open Zaak). If not enabled, Zaken are fetched using the KvK number (eSuite).",
verbose_name="Fetch Zaken for users authenticated with eHerkenning using RSIN",
),
),
migrations.RunPython(
code=migrate_fetch_eherkenning_zaken_with_rsin,
reverse_code=migrations.RunPython.noop,
),
migrations.RemoveField(
model_name="openzaakconfig",
name="fetch_eherkenning_zaken_with_rsin",
),
]
16 changes: 16 additions & 0 deletions src/open_inwoner/openzaak/migrations/0061_merge_20250124_1149.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by Django 4.2.16 on 2025-01-24 10:49

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
(
"openzaak",
"0060_remove_openzaakconfig_use_zaak_omschrijving_as_title_and_more",
),
("openzaak", "0060_zgwapigroupconfig_fetch_eherkenning_zaken_with_rsin"),
]

operations = []
21 changes: 11 additions & 10 deletions src/open_inwoner/openzaak/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,17 @@ def forms_client(self):
if self.form_service:
return cast(FormClient, self._build_client_from_attr("form_service"))

fetch_eherkenning_zaken_with_rsin = models.BooleanField(
verbose_name=_(
"Fetch Zaken for users authenticated with eHerkenning using RSIN"
),
help_text=_(
"If enabled, Zaken for eHerkenning users are fetched using the company RSIN (Open Zaak). "
"If not enabled, Zaken are fetched using the KvK number (eSuite)."
),
default=False,
)

class Meta:
verbose_name = _("ZGW API set")
verbose_name_plural = _("ZGW API sets")
Expand Down Expand Up @@ -401,16 +412,6 @@ def form_service(self, service):
default=False,
)

fetch_eherkenning_zaken_with_rsin = models.BooleanField(
verbose_name=_(
"Fetch Zaken for users authenticated with eHerkenning using RSIN"
),
help_text=_(
"If enabled, Zaken for eHerkenning users are fetched using the company RSIN (Open Zaak). "
"If not enabled, Zaken are fetched using the KvK number (eSuite)."
),
default=False,
)
derive_zaak_titel_from = models.CharField(
choices=ZaakTitleDisplayChoices.choices,
default=ZaakTitleDisplayChoices.zaaktype_omschrijving,
Expand Down
1 change: 1 addition & 0 deletions src/open_inwoner/openzaak/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class ZGWApiGroupConfigFactory(factory.django.DjangoModelFactory):
drc_service = factory.SubFactory(ServiceFactory, api_type=APITypes.drc)
ztc_service = factory.SubFactory(ServiceFactory, api_type=APITypes.ztc)
form_service = factory.SubFactory(ServiceFactory, api_type=APITypes.orc)
fetch_eherkenning_zaken_with_rsin = factory.Faker("boolean")

class Meta:
model = ZGWApiGroupConfig
Expand Down
23 changes: 10 additions & 13 deletions src/open_inwoner/openzaak/tests/test_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,7 @@ def setUp(self):
zrc_service__api_root=zaken_root,
ztc_service__api_root=catalogi_root,
form_service=None,
fetch_eherkenning_zaken_with_rsin=False,
)
)
self.mocks.append(
Expand Down Expand Up @@ -705,10 +706,11 @@ def test_list_cases_for_eherkenning_user(self, m):
with self.subTest(
fetch_eherkenning_zaken_with_rsin=fetch_eherkenning_zaken_with_rsin
):
self.config.fetch_eherkenning_zaken_with_rsin = (
fetch_eherkenning_zaken_with_rsin
)
self.config.save()
for group in self.api_groups:
group.fetch_eherkenning_zaken_with_rsin = (
fetch_eherkenning_zaken_with_rsin
)
group.save()

m.reset_mock()

Expand Down Expand Up @@ -804,9 +806,6 @@ def test_list_cases_for_kvk_user_with_vestigingsnummer(self, m):

self.client.force_login(user=self.eherkenning_user)

self.config.fetch_eherkenning_zaken_with_rsin = False
self.config.save()

m.reset_mock()

response = self.client.get(self.inner_url, HTTP_HX_REQUEST="true")
Expand Down Expand Up @@ -869,9 +868,6 @@ def test_list_cases_for_rsin_user_with_vestigingsnummer(self, m):

self.client.force_login(user=self.eherkenning_user)

self.config.fetch_eherkenning_zaken_with_rsin = True
self.config.save()

m.reset_mock()

response = self.client.get(self.inner_url, HTTP_HX_REQUEST="true")
Expand Down Expand Up @@ -928,12 +924,13 @@ def test_list_cases_for_eherkenning_user_missing_rsin(self, m):
for mock in self.mocks:
mock._setUpMocks(m)

for group in self.api_groups:
group.fetch_eherkenning_zaken_with_rsin = True
group.save()

self.eherkenning_user.rsin = ""
self.eherkenning_user.save()

self.config.fetch_eherkenning_zaken_with_rsin = True
self.config.save()

m.reset_mock()

self.client.force_login(user=self.eherkenning_user)
Expand Down
8 changes: 3 additions & 5 deletions src/open_inwoner/openzaak/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def get_zaak_type_info_object_type_config(
return None


def get_user_fetch_parameters(request, check_rsin: bool = True) -> dict:
def get_user_fetch_parameters(request, use_rsin: bool = True) -> dict:
"""
Determine the parameters used to perform ZGW resource fetches
"""
Expand All @@ -144,10 +144,8 @@ def get_user_fetch_parameters(request, check_rsin: bool = True) -> dict:
if user.kvk:
parameters = {"user_kvk": user.kvk}

if check_rsin:
config = OpenZaakConfig.get_solo()
if config.fetch_eherkenning_zaken_with_rsin:
parameters = {"user_rsin": user.rsin}
if use_rsin:
parameters = {"user_rsin": user.rsin}

vestigingsnummer = get_kvk_branch_number(request.session)
if vestigingsnummer:
Expand Down

0 comments on commit 8d18258

Please sign in to comment.