From b9c2d539c8855b89c63b8ff436c988e603a545b9 Mon Sep 17 00:00:00 2001 From: Daniel Mursa Date: Wed, 8 Jan 2025 12:14:05 +0100 Subject: [PATCH] [#310] Add validate_bag_id + migrations --- ...atie_adres_nummeraanduiding_id_and_more.py | 44 +++++++++++ .../components/contactgegevens/mixins.py | 5 +- ...ezoekadres_nummeraanduiding_id_and_more.py | 74 +++++++++++++++++++ .../klantinteracties/models/mixins.py | 10 ++- src/openklant/utils/validators.py | 4 + 5 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 src/openklant/components/contactgegevens/migrations/0004_alter_organisatie_adres_nummeraanduiding_id_and_more.py create mode 100644 src/openklant/components/klantinteracties/migrations/0024_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py diff --git a/src/openklant/components/contactgegevens/migrations/0004_alter_organisatie_adres_nummeraanduiding_id_and_more.py b/src/openklant/components/contactgegevens/migrations/0004_alter_organisatie_adres_nummeraanduiding_id_and_more.py new file mode 100644 index 00000000..985c9a99 --- /dev/null +++ b/src/openklant/components/contactgegevens/migrations/0004_alter_organisatie_adres_nummeraanduiding_id_and_more.py @@ -0,0 +1,44 @@ +# Generated by Django 4.2.15 on 2025-01-08 11:12 + +from django.db import migrations, models +import openklant.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ("contactgegevens", "0003_alter_persoon_overlijdensdatum"), + ] + + operations = [ + migrations.AlterField( + model_name="organisatie", + name="adres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="persoon", + name="adres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + ] diff --git a/src/openklant/components/contactgegevens/mixins.py b/src/openklant/components/contactgegevens/mixins.py index c9a3a6ce..7e8f76fc 100644 --- a/src/openklant/components/contactgegevens/mixins.py +++ b/src/openklant/components/contactgegevens/mixins.py @@ -4,6 +4,8 @@ from vng_api_common.descriptors import GegevensGroepType +from openklant.utils.validators import validate_bag_id + class AdresMixin(models.Model): adres_nummeraanduiding_id = models.CharField( @@ -11,7 +13,8 @@ class AdresMixin(models.Model): help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) adres_adresregel1 = models.CharField( diff --git a/src/openklant/components/klantinteracties/migrations/0024_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py b/src/openklant/components/klantinteracties/migrations/0024_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py new file mode 100644 index 00000000..204d7991 --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0024_alter_betrokkene_bezoekadres_nummeraanduiding_id_and_more.py @@ -0,0 +1,74 @@ +# Generated by Django 4.2.15 on 2025-01-08 11:12 + +from django.db import migrations, models +import openklant.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ("klantinteracties", "0023_alter_digitaaladres_omschrijving"), + ] + + operations = [ + migrations.AlterField( + model_name="betrokkene", + name="bezoekadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="betrokkene", + name="correspondentieadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="partij", + name="bezoekadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + migrations.AlterField( + model_name="partij", + name="correspondentieadres_nummeraanduiding_id", + field=models.CharField( + blank=True, + help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.", + max_length=16, + validators=[ + openklant.utils.validators.CustomRegexValidator( + message="Ongeldige nummeraanduiding BAG-ID", regex="^[0-9]{16}$" + ) + ], + verbose_name="nummeraanduiding ID", + ), + ), + ] diff --git a/src/openklant/components/klantinteracties/models/mixins.py b/src/openklant/components/klantinteracties/models/mixins.py index 3ee69758..8d01a67f 100644 --- a/src/openklant/components/klantinteracties/models/mixins.py +++ b/src/openklant/components/klantinteracties/models/mixins.py @@ -4,15 +4,17 @@ from vng_api_common.descriptors import GegevensGroepType +from openklant.utils.validators import validate_bag_id + class BezoekadresMixin(models.Model): - # TODO: Check if this is correct. bezoekadres_nummeraanduiding_id = models.CharField( _("nummeraanduiding ID"), help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) bezoekadres_adresregel1 = models.CharField( @@ -75,13 +77,13 @@ class Meta: class CorrespondentieadresMixin(models.Model): - # TODO: Check if this is correct. correspondentieadres_nummeraanduiding_id = models.CharField( _("nummeraanduiding ID"), help_text=_( "Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen." ), - max_length=255, + max_length=16, + validators=[validate_bag_id], blank=True, ) correspondentieadres_adresregel1 = models.CharField( diff --git a/src/openklant/utils/validators.py b/src/openklant/utils/validators.py index d69dbd05..b9d55dbe 100644 --- a/src/openklant/utils/validators.py +++ b/src/openklant/utils/validators.py @@ -55,3 +55,7 @@ def __call__(self, value): validate_no_space = CustomRegexValidator( regex="^[\S]+$", message=_("Geen spaties toegestaan") # noqa ) + +validate_bag_id = CustomRegexValidator( + regex="^[0-9]{16}$", message=_("Ongeldige nummeraanduiding BAG-ID") +)