From f9e4a7d680d7e5dee3537f038aedc9d467fcaf58 Mon Sep 17 00:00:00 2001 From: danielmursa-dev Date: Tue, 4 Mar 2025 09:33:44 +0100 Subject: [PATCH] [#309] Add separate fields for dutch addresses (#329) * [#309] Update model and migrations * [#309] Create and fix tests * [#309] Fix admin and schema * [#309] Update help_text * [#309] Fix BetrokkeneAdmin * [#309] Create unique Prefixed_mixin for Adres fields * [#309] Change huisnummer in charfield * [#309] Update migrations * [#309] Update migrations with handle_null_values * [#309] Fix tests * [#309] Migrations.RunPython.noop * [#309] Create migrations tests * [#309] Update schema * [#309] Fix validate_postal_code * [#309] Removed unused lines * [#309] Fixed validate_postal_code * [#309] Updated name adresmixin * [#309] Update migrations * [#309] Removed unused migrations tests * [#309] Deleted 'land' field at root level * [#309] Fixed huisnummer as int --- .../components/contactgegevens/admin.py | 12 +- .../contactgegevens/api/serializers.py | 2 - .../contactgegevens/api/tests/test_apis.py | 132 +++++-- ...satie_land_remove_persoon_land_and_more.py | 144 ++++++++ .../components/contactgegevens/mixins.py | 76 +--- .../components/contactgegevens/models.py | 26 -- .../components/contactgegevens/openapi.yaml | 78 ++-- .../klantinteracties/admin/klantcontacten.py | 20 + .../klantinteracties/admin/partijen.py | 10 + .../klantinteracties/api/tests/factories.py | 10 + .../klantinteracties/api/tests/test_expand.py | 60 +++ .../api/tests/test_klantcontacten.py | 125 +++++++ .../api/tests/test_partijen.py | 341 ++++++++++++++++++ ...rokkene_bezoekadres_huisnummer_and_more.py | 251 +++++++++++++ .../klantinteracties/models/mixins.py | 140 +------ .../components/klantinteracties/openapi.yaml | 118 +++++- src/openklant/components/utils/mixins.py | 154 ++++++++ src/openklant/fixtures/contactgegevens.json | 16 +- src/openklant/fixtures/klantinteracties.json | 60 +++ src/openklant/utils/tests/test_validators.py | 12 +- src/openklant/utils/validators.py | 2 +- 21 files changed, 1487 insertions(+), 302 deletions(-) create mode 100644 src/openklant/components/contactgegevens/migrations/0006_remove_organisatie_land_remove_persoon_land_and_more.py create mode 100644 src/openklant/components/klantinteracties/migrations/0029_betrokkene_bezoekadres_huisnummer_and_more.py diff --git a/src/openklant/components/contactgegevens/admin.py b/src/openklant/components/contactgegevens/admin.py index 50eaad90..73dd23dc 100644 --- a/src/openklant/components/contactgegevens/admin.py +++ b/src/openklant/components/contactgegevens/admin.py @@ -19,7 +19,6 @@ class PersoonAdmin(admin.ModelAdmin): "geslachtsnaam", "geboortedatum", "overlijdensdatum", - "land", ] }, ), @@ -27,6 +26,11 @@ class PersoonAdmin(admin.ModelAdmin): _("Adres gegevens"), { "fields": [ + "adres_straatnaam", + "adres_huisnummer", + "adres_huisnummertoevoeging", + "adres_postcode", + "adres_stad", "adres_adresregel1", "adres_adresregel2", "adres_adresregel3", @@ -50,7 +54,6 @@ class OrganisatieAdmin(admin.ModelAdmin): "handelsnaam", "oprichtingsdatum", "opheffingsdatum", - "land", ] }, ), @@ -58,6 +61,11 @@ class OrganisatieAdmin(admin.ModelAdmin): _("Adres gegevens"), { "fields": [ + "adres_straatnaam", + "adres_huisnummer", + "adres_huisnummertoevoeging", + "adres_postcode", + "adres_stad", "adres_adresregel1", "adres_adresregel2", "adres_adresregel3", diff --git a/src/openklant/components/contactgegevens/api/serializers.py b/src/openklant/components/contactgegevens/api/serializers.py index e4050719..163c9534 100644 --- a/src/openklant/components/contactgegevens/api/serializers.py +++ b/src/openklant/components/contactgegevens/api/serializers.py @@ -31,7 +31,6 @@ class Meta: "oprichtingsdatum", "opheffingsdatum", "adres", - "land", ) extra_kwargs = { "uuid": {"read_only": True}, @@ -71,7 +70,6 @@ class Meta: "voorvoegsel", "voornamen", "adres", - "land", ) extra_kwargs = { "uuid": {"read_only": True}, diff --git a/src/openklant/components/contactgegevens/api/tests/test_apis.py b/src/openklant/components/contactgegevens/api/tests/test_apis.py index df130f51..f1c8c76f 100644 --- a/src/openklant/components/contactgegevens/api/tests/test_apis.py +++ b/src/openklant/components/contactgegevens/api/tests/test_apis.py @@ -18,11 +18,15 @@ def test_persoon_detail(self): voorvoegsel="", voornamen="John", adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:persoon-detail", @@ -31,6 +35,11 @@ def test_persoon_detail(self): expected_adres = { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -46,7 +55,6 @@ def test_persoon_detail(self): "voorvoegsel": "", "voornamen": "John", "adres": expected_adres, - "land": "CA", } response = self.client.get(detail_url) @@ -65,12 +73,16 @@ def test_create_persoon(self): "voornamen": "Devin", "adres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, - "land": "CA", } response = self.client.post(list_url, data) @@ -89,13 +101,17 @@ def test_create_persoon(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") def test_update_persoon(self): persoon = PersoonFactory.create( @@ -106,11 +122,15 @@ def test_update_persoon(self): voorvoegsel="", voornamen="Devin", adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:persoon-detail", @@ -133,13 +153,17 @@ def test_update_persoon(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") data = { "geboortedatum": "1972-05-06", @@ -150,12 +174,16 @@ def test_update_persoon(self): "voornamen": "changed", "adres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "FR", }, - "land": "FR", } response = self.client.put(detail_url, data) data = response.json() @@ -170,13 +198,17 @@ def test_update_persoon(self): data["adres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "FR", }, ) - self.assertEqual(data["land"], "FR") def test_update_partial_persoon(self): persoon = PersoonFactory.create( @@ -187,11 +219,15 @@ def test_update_partial_persoon(self): voorvoegsel="", voornamen="Devin", adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:persoon-detail", @@ -214,13 +250,17 @@ def test_update_partial_persoon(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") data = { "overlijdensdatum": "2023-11-22", @@ -238,13 +278,17 @@ def test_update_partial_persoon(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") def test_list_pagination_pagesize_param(self): list_url = reverse("contactgegevens:persoon-list") @@ -267,11 +311,15 @@ def test_organisatie_detail(self): oprichtingsdatum="1980-02-23", opheffingsdatum="2020-09-05", adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:organisatie-detail", @@ -280,6 +328,11 @@ def test_organisatie_detail(self): expected_adres = { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", @@ -292,7 +345,6 @@ def test_organisatie_detail(self): "opheffingsdatum": "2020-09-05", "handelsnaam": "Devin Townsend", "adres": expected_adres, - "land": "CA", } response = self.client.get(detail_url) @@ -309,12 +361,16 @@ def test_create_organisatie(self): "oprichtingsdatum": "1996-03-12", "adres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, - "land": "CA", } response = self.client.post(list_url, data) @@ -330,13 +386,17 @@ def test_create_organisatie(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") def test_update_organisatie(self): organisatie = OrganisatieFactory.create( @@ -344,11 +404,15 @@ def test_update_organisatie(self): oprichtingsdatum="1996-03-12", opheffingsdatum=None, adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:organisatie-detail", @@ -368,13 +432,17 @@ def test_update_organisatie(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") data = { "handelsnaam": "changed", @@ -382,12 +450,16 @@ def test_update_organisatie(self): "opheffingsdatum": "2023-11-22", "adres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "FR", }, - "land": "FR", } response = self.client.put(detail_url, data) data = response.json() @@ -398,13 +470,17 @@ def test_update_organisatie(self): data["adres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", "land": "FR", }, ) - self.assertEqual(data["land"], "FR") def test_update_partial_organisatie(self): organisatie = OrganisatieFactory.create( @@ -412,11 +488,15 @@ def test_update_partial_organisatie(self): oprichtingsdatum="1996-03-12", opheffingsdatum=None, adres_nummeraanduiding_id="1234567890000001", + adres_straatnaam="straat", + adres_huisnummer=10, + adres_huisnummertoevoeging="A2", + adres_postcode="1008 DG", + adres_stad="Amsterdam", adres_adresregel1="adresregel1", adres_adresregel2="adresregel2", adres_adresregel3="adresregel3", adres_land="CA", - land="CA", ) detail_url = reverse( "contactgegevens:organisatie-detail", @@ -436,13 +516,17 @@ def test_update_partial_organisatie(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") data = { "opheffingsdatum": "2023-11-22", @@ -458,13 +542,17 @@ def test_update_partial_organisatie(self): data["adres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adresregel1", "adresregel2": "adresregel2", "adresregel3": "adresregel3", "land": "CA", }, ) - self.assertEqual(data["land"], "CA") def test_list_pagination_pagesize_param(self): list_url = reverse("contactgegevens:organisatie-list") diff --git a/src/openklant/components/contactgegevens/migrations/0006_remove_organisatie_land_remove_persoon_land_and_more.py b/src/openklant/components/contactgegevens/migrations/0006_remove_organisatie_land_remove_persoon_land_and_more.py new file mode 100644 index 00000000..92663a6b --- /dev/null +++ b/src/openklant/components/contactgegevens/migrations/0006_remove_organisatie_land_remove_persoon_land_and_more.py @@ -0,0 +1,144 @@ +# Generated by Django 4.2.19 on 2025-02-28 13:57 + +import django.core.validators +from django.db import migrations, models +import openklant.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "contactgegevens", + "0005_alter_organisatie_adres_nummeraanduiding_id_and_more", + ), + ] + + operations = [ + migrations.RemoveField( + model_name="organisatie", + name="land", + ), + migrations.RemoveField( + model_name="persoon", + name="land", + ), + migrations.AddField( + model_name="organisatie", + name="adres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="organisatie", + name="adres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="organisatie", + name="adres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="organisatie", + name="adres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="organisatie", + name="adres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + migrations.AddField( + model_name="persoon", + name="adres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="persoon", + name="adres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="persoon", + name="adres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="persoon", + name="adres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="persoon", + name="adres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + ] diff --git a/src/openklant/components/contactgegevens/mixins.py b/src/openklant/components/contactgegevens/mixins.py index c9fa5764..67c228bb 100644 --- a/src/openklant/components/contactgegevens/mixins.py +++ b/src/openklant/components/contactgegevens/mixins.py @@ -1,75 +1,3 @@ -from django.core.validators import MinLengthValidator -from django.db import models -from django.utils.translation import gettext_lazy as _ +from openklant.components.utils.mixins import create_prefixed_adresmixin -from vng_api_common.descriptors import GegevensGroepType - -from openklant.utils.validators import validate_bag_id, validate_country - - -class AdresMixin(models.Model): - adres_nummeraanduiding_id = models.CharField( - _("nummeraanduiding ID"), - help_text=_( - "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." - ), - max_length=16, - validators=[validate_bag_id], - blank=True, - ) - adres_adresregel1 = models.CharField( - _("adresregel 1"), - help_text=_( - "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - adres_adresregel2 = models.CharField( - _("adresregel 2"), - help_text=_( - "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - adres_adresregel3 = models.CharField( - _("adresregel 3"), - help_text=_( - "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - adres_land = models.CharField( - _("land"), - help_text=_( - "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." - ), - validators=[ - MinLengthValidator(limit_value=2), - validate_country, - ], - max_length=2, - blank=True, - ) - - adres = GegevensGroepType( - { - "nummeraanduiding_id": adres_nummeraanduiding_id, - "adresregel_1": adres_adresregel1, - "adresregel_2": adres_adresregel2, - "adresregel_3": adres_adresregel3, - "land": adres_land, - }, - optional=( - "nummeraanduiding_id", - "adresregel_1", - "adresregel_2", - "adresregel_3", - "land", - ), - ) - - class Meta: - abstract = True +AdresMixin = create_prefixed_adresmixin("adres") diff --git a/src/openklant/components/contactgegevens/models.py b/src/openklant/components/contactgegevens/models.py index c6321f84..16df9536 100644 --- a/src/openklant/components/contactgegevens/models.py +++ b/src/openklant/components/contactgegevens/models.py @@ -1,12 +1,10 @@ import uuid -from django.core.validators import MinLengthValidator from django.db import models from django.utils.translation import gettext_lazy as _ from openklant.components.contactgegevens.constants import GeslachtChoices from openklant.components.contactgegevens.mixins import AdresMixin -from openklant.utils.validators import validate_country class Organisatie(AdresMixin): @@ -40,18 +38,6 @@ class Organisatie(AdresMixin): "significante onderdeel. Een voorbeeld: 2022-02-21" ), ) - land = models.CharField( - _("land"), - help_text=_( - "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." - ), - validators=[ - MinLengthValidator(limit_value=2), - validate_country, - ], - max_length=2, - blank=True, - ) class Meta: verbose_name = _("organisatie") @@ -125,18 +111,6 @@ class Persoon(AdresMixin): max_length=200, blank=True, ) - land = models.CharField( - _("land"), - help_text=_( - "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." - ), - validators=[ - MinLengthValidator(limit_value=2), - validate_country, - ], - max_length=2, - blank=True, - ) class Meta: verbose_name = _("persoon") diff --git a/src/openklant/components/contactgegevens/openapi.yaml b/src/openklant/components/contactgegevens/openapi.yaml index 060d9610..0176df50 100644 --- a/src/openklant/components/contactgegevens/openapi.yaml +++ b/src/openklant/components/contactgegevens/openapi.yaml @@ -365,12 +365,6 @@ components: - $ref: '#/components/schemas/OrganisatieAdres' nullable: true description: De adres gegevens van een organisatie. - land: - type: string - description: ISO 3166-code die het land (buiten Nederland) aangeeft alwaar - de ingeschrevene verblijft. - maxLength: 2 - minLength: 2 required: - handelsnaam - url @@ -384,6 +378,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -493,12 +514,6 @@ components: - $ref: '#/components/schemas/OrganisatieAdres' nullable: true description: De adres gegevens van een organisatie. - land: - type: string - description: ISO 3166-code die het land (buiten Nederland) aangeeft alwaar - de ingeschrevene verblijft. - maxLength: 2 - minLength: 2 PatchedPersoon: type: object description: |- @@ -559,12 +574,6 @@ components: - $ref: '#/components/schemas/PersoonAdres' nullable: true description: De adres gegevens van een organisatie. - land: - type: string - description: ISO 3166-code die het land (buiten Nederland) aangeeft alwaar - de ingeschrevene verblijft. - maxLength: 2 - minLength: 2 Persoon: type: object description: |- @@ -625,12 +634,6 @@ components: - $ref: '#/components/schemas/PersoonAdres' nullable: true description: De adres gegevens van een organisatie. - land: - type: string - description: ISO 3166-code die het land (buiten Nederland) aangeeft alwaar - de ingeschrevene verblijft. - maxLength: 2 - minLength: 2 required: - geboortedatum - geslachtsnaam @@ -645,6 +648,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie diff --git a/src/openklant/components/klantinteracties/admin/klantcontacten.py b/src/openklant/components/klantinteracties/admin/klantcontacten.py index 155d2bbe..de3f52ae 100644 --- a/src/openklant/components/klantinteracties/admin/klantcontacten.py +++ b/src/openklant/components/klantinteracties/admin/klantcontacten.py @@ -35,6 +35,11 @@ class BetrokkeneInlineAdmin(admin.StackedInline): { "fields": [ "bezoekadres_nummeraanduiding_id", + "bezoekadres_straatnaam", + "bezoekadres_huisnummer", + "bezoekadres_huisnummertoevoeging", + "bezoekadres_postcode", + "bezoekadres_stad", "bezoekadres_adresregel1", "bezoekadres_adresregel2", "bezoekadres_adresregel3", @@ -47,6 +52,11 @@ class BetrokkeneInlineAdmin(admin.StackedInline): { "fields": [ "correspondentieadres_nummeraanduiding_id", + "correspondentieadres_straatnaam", + "correspondentieadres_huisnummer", + "correspondentieadres_huisnummertoevoeging", + "correspondentieadres_postcode", + "correspondentieadres_stad", "correspondentieadres_adresregel1", "correspondentieadres_adresregel2", "correspondentieadres_adresregel3", @@ -109,6 +119,11 @@ class BetrokkeneAdmin(admin.ModelAdmin): { "fields": [ "bezoekadres_nummeraanduiding_id", + "bezoekadres_straatnaam", + "bezoekadres_huisnummer", + "bezoekadres_huisnummertoevoeging", + "bezoekadres_postcode", + "bezoekadres_stad", "bezoekadres_adresregel1", "bezoekadres_adresregel2", "bezoekadres_adresregel3", @@ -121,6 +136,11 @@ class BetrokkeneAdmin(admin.ModelAdmin): { "fields": [ "correspondentieadres_nummeraanduiding_id", + "correspondentieadres_straatnaam", + "correspondentieadres_huisnummer", + "correspondentieadres_huisnummertoevoeging", + "correspondentieadres_postcode", + "correspondentieadres_stad", "correspondentieadres_adresregel1", "correspondentieadres_adresregel2", "correspondentieadres_adresregel3", diff --git a/src/openklant/components/klantinteracties/admin/partijen.py b/src/openklant/components/klantinteracties/admin/partijen.py index 52af8faf..bc13caff 100644 --- a/src/openklant/components/klantinteracties/admin/partijen.py +++ b/src/openklant/components/klantinteracties/admin/partijen.py @@ -160,6 +160,11 @@ class PartijAdmin(admin.ModelAdmin): { "fields": [ "bezoekadres_nummeraanduiding_id", + "bezoekadres_straatnaam", + "bezoekadres_huisnummer", + "bezoekadres_huisnummertoevoeging", + "bezoekadres_postcode", + "bezoekadres_stad", "bezoekadres_adresregel1", "bezoekadres_adresregel2", "bezoekadres_adresregel3", @@ -172,6 +177,11 @@ class PartijAdmin(admin.ModelAdmin): { "fields": [ "correspondentieadres_nummeraanduiding_id", + "correspondentieadres_straatnaam", + "correspondentieadres_huisnummer", + "correspondentieadres_huisnummertoevoeging", + "correspondentieadres_postcode", + "correspondentieadres_stad", "correspondentieadres_adresregel1", "correspondentieadres_adresregel2", "correspondentieadres_adresregel3", diff --git a/src/openklant/components/klantinteracties/api/tests/factories.py b/src/openklant/components/klantinteracties/api/tests/factories.py index 33648b70..4ec7620c 100644 --- a/src/openklant/components/klantinteracties/api/tests/factories.py +++ b/src/openklant/components/klantinteracties/api/tests/factories.py @@ -14,6 +14,11 @@ class KlantContactDataFactory(factory.DictFactory): class BezoekAdresDataFactory(factory.DictFactory): nummeraanduidingId = "1234567890000001" + straatnaam = "straat" + huisnummer = 10 + huisnummertoevoeging = "A2" + postcode = "1008 DG" + stad = "Amsterdam" adresregel1 = "adres1" adresregel2 = "adres2" adresregel3 = "adres3" @@ -22,6 +27,11 @@ class BezoekAdresDataFactory(factory.DictFactory): class CorrespondentieAdresDataFactory(factory.DictFactory): nummeraanduidingId = "1234567890000002" + straatnaam = "straat" + huisnummer = 10 + huisnummertoevoeging = "A2" + postcode = "1008 DG" + stad = "Amsterdam" adresregel1 = "adres1" adresregel2 = "adres2" adresregel3 = "adres3" diff --git a/src/openklant/components/klantinteracties/api/tests/test_expand.py b/src/openklant/components/klantinteracties/api/tests/test_expand.py index 5c38ff70..dc4a935b 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_expand.py +++ b/src/openklant/components/klantinteracties/api/tests/test_expand.py @@ -65,6 +65,11 @@ def test_list_single_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.bezoekadres_straatnaam, + "huisnummer": self.betrokkene.bezoekadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.bezoekadres_huisnummertoevoeging, + "postcode": self.betrokkene.bezoekadres_postcode, + "stad": self.betrokkene.bezoekadres_stad, "adresregel1": self.betrokkene.bezoekadres_adresregel1, "adresregel2": self.betrokkene.bezoekadres_adresregel2, "adresregel3": self.betrokkene.bezoekadres_adresregel3, @@ -75,6 +80,11 @@ def test_list_single_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.correspondentieadres_adresregel1, "adresregel2": self.betrokkene.correspondentieadres_adresregel2, "adresregel3": self.betrokkene.correspondentieadres_adresregel3, @@ -117,6 +127,11 @@ def test_list_multiple_level_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.bezoekadres_straatnaam, + "huisnummer": self.betrokkene.bezoekadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.bezoekadres_huisnummertoevoeging, + "postcode": self.betrokkene.bezoekadres_postcode, + "stad": self.betrokkene.bezoekadres_stad, "adresregel1": self.betrokkene.bezoekadres_adresregel1, "adresregel2": self.betrokkene.bezoekadres_adresregel2, "adresregel3": self.betrokkene.bezoekadres_adresregel3, @@ -127,6 +142,11 @@ def test_list_multiple_level_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.correspondentieadres_adresregel1, "adresregel2": self.betrokkene.correspondentieadres_adresregel2, "adresregel3": self.betrokkene.correspondentieadres_adresregel3, @@ -166,6 +186,11 @@ def test_list_multiple_level_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.partij.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.partij.bezoekadres_adresregel1, "adresregel2": self.partij.bezoekadres_adresregel2, "adresregel3": self.partij.bezoekadres_adresregel3, @@ -176,6 +201,11 @@ def test_list_multiple_level_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.partij.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.partij.correspondentieadres_adresregel1, "adresregel2": self.partij.correspondentieadres_adresregel2, "adresregel3": self.partij.correspondentieadres_adresregel3, @@ -202,6 +232,11 @@ def test_detail_single_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.bezoekadres_adresregel1, "adresregel2": self.betrokkene.bezoekadres_adresregel2, "adresregel3": self.betrokkene.bezoekadres_adresregel3, @@ -212,6 +247,11 @@ def test_detail_single_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.correspondentieadres_adresregel1, "adresregel2": self.betrokkene.correspondentieadres_adresregel2, "adresregel3": self.betrokkene.correspondentieadres_adresregel3, @@ -253,6 +293,11 @@ def test_detail_multiple_level_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.betrokkene.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.bezoekadres_adresregel1, "adresregel2": self.betrokkene.bezoekadres_adresregel2, "adresregel3": self.betrokkene.bezoekadres_adresregel3, @@ -263,6 +308,11 @@ def test_detail_multiple_level_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.betrokkene.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.betrokkene.correspondentieadres_adresregel1, "adresregel2": self.betrokkene.correspondentieadres_adresregel2, "adresregel3": self.betrokkene.correspondentieadres_adresregel3, @@ -302,6 +352,11 @@ def test_detail_multiple_level_expansion(self): expand["bezoekadres"], { "nummeraanduidingId": self.partij.bezoekadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.partij.bezoekadres_adresregel1, "adresregel2": self.partij.bezoekadres_adresregel2, "adresregel3": self.partij.bezoekadres_adresregel3, @@ -312,6 +367,11 @@ def test_detail_multiple_level_expansion(self): expand["correspondentieadres"], { "nummeraanduidingId": self.partij.correspondentieadres_nummeraanduiding_id, + "straatnaam": self.betrokkene.correspondentieadres_straatnaam, + "huisnummer": self.betrokkene.correspondentieadres_huisnummer, + "huisnummertoevoeging": self.betrokkene.correspondentieadres_huisnummertoevoeging, + "postcode": self.betrokkene.correspondentieadres_postcode, + "stad": self.betrokkene.correspondentieadres_stad, "adresregel1": self.partij.correspondentieadres_adresregel1, "adresregel2": self.partij.correspondentieadres_adresregel2, "adresregel3": self.partij.correspondentieadres_adresregel3, diff --git a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py index 933ab11a..282756bc 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py +++ b/src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py @@ -411,6 +411,11 @@ def test_create_betrokkene_with_partij(self): "wasPartij": {"uuid": str(partij.uuid)}, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -418,6 +423,11 @@ def test_create_betrokkene_with_partij(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -445,6 +455,11 @@ def test_create_betrokkene_with_partij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -455,6 +470,11 @@ def test_create_betrokkene_with_partij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -484,6 +504,11 @@ def test_create_betrokkene(self): "wasPartij": None, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -491,6 +516,11 @@ def test_create_betrokkene(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -518,6 +548,11 @@ def test_create_betrokkene(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -528,6 +563,11 @@ def test_create_betrokkene(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -556,11 +596,21 @@ def test_update_betrokkene(self): klantcontact=klantcontact, partij=partij, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000002", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -585,6 +635,11 @@ def test_update_betrokkene(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -595,6 +650,11 @@ def test_update_betrokkene(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -621,6 +681,11 @@ def test_update_betrokkene(self): "hadKlantcontact": {"uuid": str(klantcontact2.uuid)}, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -628,6 +693,11 @@ def test_update_betrokkene(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -655,6 +725,11 @@ def test_update_betrokkene(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -665,6 +740,11 @@ def test_update_betrokkene(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -693,11 +773,21 @@ def test_partial_update_betrokkene(self): klantcontact=klantcontact, partij=partij, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000002", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -722,6 +812,11 @@ def test_partial_update_betrokkene(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -732,6 +827,11 @@ def test_partial_update_betrokkene(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -756,6 +856,11 @@ def test_partial_update_betrokkene(self): data = { "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -772,6 +877,11 @@ def test_partial_update_betrokkene(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -782,6 +892,11 @@ def test_partial_update_betrokkene(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1575,6 +1690,11 @@ def test_create_success(self): "digitaleAdressen": [], "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1582,6 +1702,11 @@ def test_create_success(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", diff --git a/src/openklant/components/klantinteracties/api/tests/test_partijen.py b/src/openklant/components/klantinteracties/api/tests/test_partijen.py index 761e7086..917710e5 100644 --- a/src/openklant/components/klantinteracties/api/tests/test_partijen.py +++ b/src/openklant/components/klantinteracties/api/tests/test_partijen.py @@ -114,6 +114,11 @@ def test_create_partij(self): "indicatieActief": True, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -121,6 +126,11 @@ def test_create_partij(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -160,6 +170,11 @@ def test_create_partij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -170,6 +185,11 @@ def test_create_partij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -216,6 +236,11 @@ def test_create_partij(self): response_data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -226,6 +251,11 @@ def test_create_partij(self): response_data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -385,6 +415,11 @@ def test_create_persoon(self): "indicatieActief": True, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -392,6 +427,11 @@ def test_create_persoon(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -428,6 +468,11 @@ def test_create_persoon(self): response_data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -438,6 +483,11 @@ def test_create_persoon(self): response_data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -477,6 +527,11 @@ def test_create_organisatie(self): "indicatieActief": True, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -484,6 +539,11 @@ def test_create_organisatie(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -516,6 +576,11 @@ def test_create_organisatie(self): response_data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -526,6 +591,11 @@ def test_create_organisatie(self): response_data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -552,6 +622,11 @@ def test_create_contactpersoon(self): "indicatieActief": True, "bezoekadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -559,6 +634,11 @@ def test_create_contactpersoon(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -598,6 +678,11 @@ def test_create_contactpersoon(self): response_data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -608,6 +693,11 @@ def test_create_contactpersoon(self): response_data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -642,11 +732,21 @@ def test_update_partij(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -702,6 +802,12 @@ def test_update_partij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", + "adresregel1": "adres1", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -712,6 +818,11 @@ def test_update_partij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -744,6 +855,11 @@ def test_update_partij(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -751,6 +867,11 @@ def test_update_partij(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -804,6 +925,11 @@ def test_update_partij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -814,6 +940,11 @@ def test_update_partij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -900,6 +1031,11 @@ def test_update_partij(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -907,6 +1043,11 @@ def test_update_partij(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -932,6 +1073,11 @@ def test_update_partij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -942,6 +1088,11 @@ def test_update_partij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -960,11 +1111,21 @@ def test_update_partij_persoon(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -997,6 +1158,11 @@ def test_update_partij_persoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1007,6 +1173,11 @@ def test_update_partij_persoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1039,6 +1210,11 @@ def test_update_partij_persoon(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1046,6 +1222,11 @@ def test_update_partij_persoon(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1079,6 +1260,11 @@ def test_update_partij_persoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1089,6 +1275,11 @@ def test_update_partij_persoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1119,11 +1310,21 @@ def test_update_partij_organisatie(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1150,6 +1351,11 @@ def test_update_partij_organisatie(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1160,6 +1366,11 @@ def test_update_partij_organisatie(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1181,6 +1392,11 @@ def test_update_partij_organisatie(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1188,6 +1404,11 @@ def test_update_partij_organisatie(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1216,6 +1437,11 @@ def test_update_partij_organisatie(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1226,6 +1452,11 @@ def test_update_partij_organisatie(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1248,11 +1479,21 @@ def test_update_partij_contactpersoon(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1295,6 +1536,11 @@ def test_update_partij_contactpersoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1305,6 +1551,11 @@ def test_update_partij_contactpersoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1341,6 +1592,11 @@ def test_update_partij_contactpersoon(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1348,6 +1604,11 @@ def test_update_partij_contactpersoon(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1382,6 +1643,11 @@ def test_update_partij_contactpersoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1392,6 +1658,11 @@ def test_update_partij_contactpersoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1426,11 +1697,21 @@ def test_update_partij_contactpersoon_to_persoon(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1465,6 +1746,11 @@ def test_update_partij_contactpersoon_to_persoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1475,6 +1761,11 @@ def test_update_partij_contactpersoon_to_persoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1511,6 +1802,11 @@ def test_update_partij_contactpersoon_to_persoon(self): "indicatieActief": False, "bezoekadres": { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1518,6 +1814,11 @@ def test_update_partij_contactpersoon_to_persoon(self): }, "correspondentieadres": { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1551,6 +1852,11 @@ def test_update_partij_contactpersoon_to_persoon(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000002", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1561,6 +1867,11 @@ def test_update_partij_contactpersoon_to_persoon(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000003", + "straatnaam": "changed", + "huisnummer": 10, + "huisnummertoevoeging": "changed", + "postcode": "1001 AB", + "stad": "Amsterdam", "adresregel1": "changed", "adresregel2": "changed", "adresregel3": "changed", @@ -1591,11 +1902,21 @@ def test_partial_update_parij(self): voorkeurstaal="ndl", indicatie_actief=True, bezoekadres_nummeraanduiding_id="1234567890000001", + bezoekadres_straatnaam="straat", + bezoekadres_huisnummer=10, + bezoekadres_huisnummertoevoeging="A2", + bezoekadres_postcode="1008 DG", + bezoekadres_stad="Amsterdam", bezoekadres_adresregel1="adres1", bezoekadres_adresregel2="adres2", bezoekadres_adresregel3="adres3", bezoekadres_land="NL", correspondentieadres_nummeraanduiding_id="1234567890000001", + correspondentieadres_straatnaam="straat", + correspondentieadres_huisnummer=10, + correspondentieadres_huisnummertoevoeging="A2", + correspondentieadres_postcode="1008 DG", + correspondentieadres_stad="Amsterdam", correspondentieadres_adresregel1="adres1", correspondentieadres_adresregel2="adres2", correspondentieadres_adresregel3="adres3", @@ -1634,6 +1955,11 @@ def test_partial_update_parij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1644,6 +1970,11 @@ def test_partial_update_parij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1691,6 +2022,11 @@ def test_partial_update_parij(self): data["bezoekadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", @@ -1701,6 +2037,11 @@ def test_partial_update_parij(self): data["correspondentieadres"], { "nummeraanduidingId": "1234567890000001", + "straatnaam": "straat", + "huisnummer": 10, + "huisnummertoevoeging": "A2", + "postcode": "1008 DG", + "stad": "Amsterdam", "adresregel1": "adres1", "adresregel2": "adres2", "adresregel3": "adres3", diff --git a/src/openklant/components/klantinteracties/migrations/0029_betrokkene_bezoekadres_huisnummer_and_more.py b/src/openklant/components/klantinteracties/migrations/0029_betrokkene_bezoekadres_huisnummer_and_more.py new file mode 100644 index 00000000..3ddfa12d --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0029_betrokkene_bezoekadres_huisnummer_and_more.py @@ -0,0 +1,251 @@ +# Generated by Django 4.2.19 on 2025-02-28 13:57 + +import django.core.validators +from django.db import migrations, models +import openklant.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ("klantinteracties", "0028_partijidentificator_sub_identificator_van_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="betrokkene", + name="bezoekadres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="bezoekadres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="bezoekadres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="bezoekadres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="bezoekadres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="correspondentieadres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="correspondentieadres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="correspondentieadres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="correspondentieadres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="betrokkene", + name="correspondentieadres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + migrations.AddField( + model_name="partij", + name="bezoekadres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="partij", + name="bezoekadres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="partij", + name="bezoekadres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="partij", + name="bezoekadres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="partij", + name="bezoekadres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + migrations.AddField( + model_name="partij", + name="correspondentieadres_huisnummer", + field=models.IntegerField( + blank=True, + help_text="Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + null=True, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(99999), + ], + verbose_name="huisnummer", + ), + ), + migrations.AddField( + model_name="partij", + name="correspondentieadres_huisnummertoevoeging", + field=models.CharField( + blank=True, + help_text="Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=20, + verbose_name="huisnummertoevoeging", + ), + ), + migrations.AddField( + model_name="partij", + name="correspondentieadres_postcode", + field=models.CharField( + blank=True, + help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=7, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige postcode", regex="^[1-9][0-9]{3} [A-Z]{2}$" + ) + ], + verbose_name="postcode", + ), + ), + migrations.AddField( + model_name="partij", + name="correspondentieadres_stad", + field=models.CharField( + blank=True, + help_text="Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="stad", + ), + ), + migrations.AddField( + model_name="partij", + name="correspondentieadres_straatnaam", + field=models.CharField( + blank=True, + help_text="Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + max_length=255, + verbose_name="straatnaam", + ), + ), + ] diff --git a/src/openklant/components/klantinteracties/models/mixins.py b/src/openklant/components/klantinteracties/models/mixins.py index a2e13582..38595808 100644 --- a/src/openklant/components/klantinteracties/models/mixins.py +++ b/src/openklant/components/klantinteracties/models/mixins.py @@ -1,146 +1,12 @@ -from django.core.validators import MinLengthValidator from django.db import models from django.utils.translation import gettext_lazy as _ from vng_api_common.descriptors import GegevensGroepType -from openklant.utils.validators import validate_bag_id, validate_country +from openklant.components.utils.mixins import create_prefixed_adresmixin - -class BezoekadresMixin(models.Model): - bezoekadres_nummeraanduiding_id = models.CharField( - _("nummeraanduiding ID"), - help_text=_( - "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." - ), - max_length=16, - validators=[validate_bag_id], - blank=True, - ) - bezoekadres_adresregel1 = models.CharField( - _("adresregel 1"), - help_text=_( - "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - bezoekadres_adresregel2 = models.CharField( - _("adresregel 2"), - help_text=_( - "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - bezoekadres_adresregel3 = models.CharField( - _("adresregel 3"), - help_text=_( - "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - bezoekadres_land = models.CharField( - _("land"), - help_text=_( - "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." - ), - validators=[ - MinLengthValidator(limit_value=2), - validate_country, - ], - max_length=2, - blank=True, - ) - - bezoekadres = GegevensGroepType( - { - "nummeraanduiding_id": bezoekadres_nummeraanduiding_id, - "adresregel_1": bezoekadres_adresregel1, - "adresregel_2": bezoekadres_adresregel2, - "adresregel_3": bezoekadres_adresregel3, - "land": bezoekadres_land, - }, - optional=( - "nummeraanduiding_id", - "adresregel_1", - "adresregel_2", - "adresregel_3", - "land", - ), - ) - - class Meta: - abstract = True - - -class CorrespondentieadresMixin(models.Model): - correspondentieadres_nummeraanduiding_id = models.CharField( - _("nummeraanduiding ID"), - help_text=_( - "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." - ), - max_length=16, - validators=[validate_bag_id], - blank=True, - ) - correspondentieadres_adresregel1 = models.CharField( - _("adresregel 1"), - help_text=_( - "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - correspondentieadres_adresregel2 = models.CharField( - _("adresregel 2"), - help_text=_( - "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - correspondentieadres_adresregel3 = models.CharField( - _("adresregel 3"), - help_text=_( - "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." - ), - max_length=80, - blank=True, - ) - correspondentieadres_land = models.CharField( - _("land"), - help_text=_( - "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." - ), - validators=[ - MinLengthValidator(limit_value=2), - validate_country, - ], - max_length=2, - blank=True, - ) - - correspondentieadres = GegevensGroepType( - { - "nummeraanduiding_id": correspondentieadres_nummeraanduiding_id, - "adresregel_1": correspondentieadres_adresregel1, - "adresregel_2": correspondentieadres_adresregel2, - "adresregel_3": correspondentieadres_adresregel3, - "land": correspondentieadres_land, - }, - optional=( - "nummeraanduiding_id", - "adresregel_1", - "adresregel_2", - "adresregel_3", - "land", - ), - ) - - class Meta: - abstract = True +BezoekadresMixin = create_prefixed_adresmixin("bezoekadres") +CorrespondentieadresMixin = create_prefixed_adresmixin("correspondentieadres") class ContactnaamMixin(models.Model): diff --git a/src/openklant/components/klantinteracties/openapi.yaml b/src/openklant/components/klantinteracties/openapi.yaml index c36eaa53..0009a6c9 100644 --- a/src/openklant/components/klantinteracties/openapi.yaml +++ b/src/openklant/components/klantinteracties/openapi.yaml @@ -3206,6 +3206,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -3337,6 +3364,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -4633,6 +4687,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -4663,6 +4744,33 @@ components: en Gebouwen. pattern: ^[0-9]{16}$ maxLength: 16 + straatnaam: + type: string + description: Straatnaam van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 + huisnummer: + type: integer + maximum: 99999 + minimum: 1 + description: Huisnummer van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + huisnummertoevoeging: + type: string + description: Huisnummertoevoeging van het adres (indien het een Nederlands + adres betreft zonder BAG-id). + maxLength: 20 + postcode: + type: string + description: Postcode van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + pattern: ^[1-9][0-9]{3} [A-Z]{2}$ + maxLength: 7 + stad: + type: string + description: Stad van het adres (indien het een Nederlands adres betreft + zonder BAG-id). + maxLength: 255 adresregel1: type: string description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie @@ -4758,7 +4866,10 @@ components: allOf: - $ref: '#/components/schemas/PartijIdentificatorForeignkey' nullable: true - description: Relatie sub_identificator_van + description: The parent PartijIdentificator under which this PartijIdentificator + is unique (e.g. the parent identificator could specify a KVK number and + the child identificator could specify a vestigingsnummer that is unique + for the KVK number). required: - identificeerdePartij - partijIdentificator @@ -5310,7 +5421,10 @@ components: allOf: - $ref: '#/components/schemas/PartijIdentificatorForeignkey' nullable: true - description: Relatie sub_identificator_van + description: The parent PartijIdentificator under which this PartijIdentificator + is unique (e.g. the parent identificator could specify a KVK number and + the child identificator could specify a vestigingsnummer that is unique + for the KVK number). PatchedRekeningnummer: type: object properties: diff --git a/src/openklant/components/utils/mixins.py b/src/openklant/components/utils/mixins.py index b5fc1e18..1b7dc453 100644 --- a/src/openklant/components/utils/mixins.py +++ b/src/openklant/components/utils/mixins.py @@ -1,3 +1,19 @@ +from django.core.validators import ( + MaxValueValidator, + MinLengthValidator, + MinValueValidator, +) +from django.db import models +from django.utils.translation import gettext_lazy as _ + +from vng_api_common.descriptors import GegevensGroepType + +from openklant.utils.validators import ( + validate_bag_id, + validate_country, + validate_postal_code, +) + from .expansion import ExpandJSONRenderer @@ -43,3 +59,141 @@ def get_requested_inclusions(self, request): if request.method == "POST": return ",".join(request.data.get(self.expand_param, [])) return request.GET.get(self.expand_param) + + +def create_prefixed_adresmixin(prefix: str): + """Dynamically mreate a Mixin with a prefix for Adres fields""" + + base_fields = { + "nummeraanduiding_id": models.CharField( + _("nummeraanduiding ID"), + help_text=_( + "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." + ), + max_length=16, + validators=[validate_bag_id], + blank=True, + ), + "straatnaam": models.CharField( + _("straatnaam"), + help_text=_( + "Straatnaam van het adres (indien het een Nederlands adres betreft zonder BAG-id)." + ), + max_length=255, + blank=True, + ), + "huisnummer": models.IntegerField( + _("huisnummer"), + help_text=_( + "Huisnummer van het adres (indien het een Nederlands adres betreft zonder BAG-id)." + ), + validators=[MinValueValidator(1), MaxValueValidator(99999)], + blank=True, + null=True, + ), + "huisnummertoevoeging": models.CharField( + _("huisnummertoevoeging"), + help_text=_( + "Huisnummertoevoeging van het adres (indien het een Nederlands adres betreft zonder BAG-id).", + ), + max_length=20, + blank=True, + ), + "postcode": models.CharField( + _("postcode"), + help_text=_( + "Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id)." + ), + validators=[validate_postal_code], + max_length=7, + blank=True, + ), + "stad": models.CharField( + _("stad"), + help_text=_( + "Stad van het adres (indien het een Nederlands adres betreft zonder BAG-id)." + ), + max_length=255, + blank=True, + ), + "adresregel1": models.CharField( + _("adresregel 1"), + help_text=_( + "Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." + ), + max_length=80, + blank=True, + ), + "adresregel2": models.CharField( + _("adresregel 2"), + help_text=_( + "Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." + ), + max_length=80, + blank=True, + ), + "adresregel3": models.CharField( + _("adresregel 3"), + help_text=_( + "Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen." + ), + max_length=80, + blank=True, + ), + "land": models.CharField( + _("land"), + help_text=_( + "ISO 3166-code die het land (buiten Nederland) aangeeft alwaar de ingeschrevene verblijft." + ), + validators=[ + MinLengthValidator(limit_value=2), + validate_country, + ], + max_length=2, + blank=True, + ), + } + + prefixed_fields = {f"{prefix}_{name}": field for name, field in base_fields.items()} + + class Meta: + abstract = True + + mixin_class = type( + f"{prefix.capitalize()}Mixin", + (models.Model,), + {**prefixed_fields, "__module__": __name__, "Meta": Meta}, + ) + + setattr( + mixin_class, + prefix, + GegevensGroepType( + { + "nummeraanduiding_id": base_fields["nummeraanduiding_id"], + "straatnaam": base_fields["straatnaam"], + "huisnummer": base_fields["huisnummer"], + "huisnummertoevoeging": base_fields["huisnummertoevoeging"], + "postcode": base_fields["postcode"], + "stad": base_fields["stad"], + "adresregel_1": base_fields["adresregel1"], + "adresregel_2": base_fields["adresregel2"], + "adresregel_3": base_fields["adresregel3"], + "land": base_fields["land"], + }, + optional=( + "nummeraanduiding_id", + "straatnaam", + "huisnummer", + "huisnummertoevoeging", + "postcode", + "stad", + "adresregel_1", + "adresregel_2", + "adresregel_3", + "land", + ), + ), + ) + + return mixin_class diff --git a/src/openklant/fixtures/contactgegevens.json b/src/openklant/fixtures/contactgegevens.json index a2833fcd..85b47126 100644 --- a/src/openklant/fixtures/contactgegevens.json +++ b/src/openklant/fixtures/contactgegevens.json @@ -4,6 +4,11 @@ "pk": 1, "fields": { "adres_nummeraanduiding_id": "1234567890000001", + "adres_straatnaam":"", + "adres_huisnummer":1, + "adres_huisnummertoevoeging":"", + "adres_postcode":"", + "adres_stad":"", "adres_adresregel1": "Keizersgracht 117", "adres_adresregel2": "1015 CJ Amsterdam", "adres_adresregel3": "Noord-Holland", @@ -11,8 +16,7 @@ "uuid": "9df246f7-027b-4305-bf43-043b3b926ed3", "handelsnaam": "Maykin Media", "oprichtingsdatum": "2008-01-01", - "opheffingsdatum": null, - "land": "NL" + "opheffingsdatum": null } }, { @@ -20,6 +24,11 @@ "pk": 1, "fields": { "adres_nummeraanduiding_id": "1234567890000002", + "adres_straatnaam":"", + "adres_huisnummer":1, + "adres_huisnummertoevoeging":"", + "adres_postcode":"", + "adres_stad":"", "adres_adresregel1": "Keizersgracht 117", "adres_adresregel2": "1015 CJ Amsterdam", "adres_adresregel3": "Noord-Holland", @@ -30,8 +39,7 @@ "geslachtsnaam": "Schalkwijk", "geslacht": "v", "voorvoegsel": "van", - "voornamen": "Nagihan", - "land": "NL" + "voornamen": "Nagihan" } } ] diff --git a/src/openklant/fixtures/klantinteracties.json b/src/openklant/fixtures/klantinteracties.json index 8c0b7be7..de410304 100644 --- a/src/openklant/fixtures/klantinteracties.json +++ b/src/openklant/fixtures/klantinteracties.json @@ -100,11 +100,21 @@ "pk": 1, "fields": { "bezoekadres_nummeraanduiding_id": "", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "", "bezoekadres_adresregel2": "", "bezoekadres_adresregel3": "", "bezoekadres_land": "", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", @@ -126,11 +136,21 @@ "pk": 2, "fields": { "bezoekadres_nummeraanduiding_id": "", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "", "bezoekadres_adresregel2": "", "bezoekadres_adresregel3": "", "bezoekadres_land": "", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", @@ -152,11 +172,21 @@ "pk": 3, "fields": { "bezoekadres_nummeraanduiding_id": "1234567890000001", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "Keizersgracht 117", "bezoekadres_adresregel2": "1015 CJ Amsterdam", "bezoekadres_adresregel3": "", "bezoekadres_land": "NL", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", @@ -203,11 +233,21 @@ "pk": 1, "fields": { "bezoekadres_nummeraanduiding_id": "", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "", "bezoekadres_adresregel2": "", "bezoekadres_adresregel3": "", "bezoekadres_land": "", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", @@ -228,11 +268,21 @@ "pk": 2, "fields": { "bezoekadres_nummeraanduiding_id": "1234567890000002", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "Keizersgracht 117", "bezoekadres_adresregel2": "1015 CJ Amsterdam", "bezoekadres_adresregel3": "", "bezoekadres_land": "NL", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", @@ -253,11 +303,21 @@ "pk": 3, "fields": { "bezoekadres_nummeraanduiding_id": "", + "bezoekadres_straatnaam":"", + "bezoekadres_huisnummer":1, + "bezoekadres_huisnummertoevoeging":"", + "bezoekadres_postcode":"", + "bezoekadres_stad":"", "bezoekadres_adresregel1": "", "bezoekadres_adresregel2": "", "bezoekadres_adresregel3": "", "bezoekadres_land": "", "correspondentieadres_nummeraanduiding_id": "", + "correspondentieadres_straatnaam":"", + "correspondentieadres_huisnummer":1, + "correspondentieadres_huisnummertoevoeging":"", + "correspondentieadres_postcode":"", + "correspondentieadres_stad":"", "correspondentieadres_adresregel1": "", "correspondentieadres_adresregel2": "", "correspondentieadres_adresregel3": "", diff --git a/src/openklant/utils/tests/test_validators.py b/src/openklant/utils/tests/test_validators.py index ca86abba..5a6720a5 100644 --- a/src/openklant/utils/tests/test_validators.py +++ b/src/openklant/utils/tests/test_validators.py @@ -49,6 +49,7 @@ def test_validate_postal_code(self): "1000 AAA", "1000AAA", "0000aa", + "0000 aa", "0999aa", "1000 aa", "1000 aaa", @@ -57,6 +58,9 @@ def test_validate_postal_code(self): "1111,a", '1111"a', '1111"aa', + "1111 Aa", + "1111 aA", + "1015CJ", ] for invalid_postal_code in invalid_postal_codes: self.assertRaisesMessage( @@ -65,15 +69,7 @@ def test_validate_postal_code(self): validate_postal_code, invalid_postal_code, ) - - self.assertIsNone(validate_postal_code("1015CJ")) self.assertIsNone(validate_postal_code("1015 CJ")) - self.assertIsNone(validate_postal_code("1015cj")) - self.assertIsNone(validate_postal_code("1015 cj")) - self.assertIsNone(validate_postal_code("1015Cj")) - self.assertIsNone(validate_postal_code("1015 Cj")) - self.assertIsNone(validate_postal_code("1015cJ")) - self.assertIsNone(validate_postal_code("1015 cJ")) def test_validate_phone_number(self): valid_phone_numbers = [ diff --git a/src/openklant/utils/validators.py b/src/openklant/utils/validators.py index 32ba41ee..6c5269bc 100644 --- a/src/openklant/utils/validators.py +++ b/src/openklant/utils/validators.py @@ -59,7 +59,7 @@ def __call__(self, value): validate_postal_code = CustomRegexValidator( - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", message=_("Ongeldige postcode") + regex="^[1-9][0-9]{3} [A-Z]{2}$", message=_("Ongeldige postcode") ) # Doesn't truely validate if IBAN is valid but validated the basic pattern.