From 089a87b00c1ca7b9dea416f5e5f713c335238335 Mon Sep 17 00:00:00 2001 From: Daniel Mursa Date: Wed, 12 Feb 2025 11:06:16 +0100 Subject: [PATCH] [#309] Fix validate_postal_code --- ...6_organisatie_adres_huisnummer_and_more.py | 20 ++++------ .../components/contactgegevens/openapi.yaml | 8 ++-- ...rokkene_bezoekadres_huisnummer_and_more.py | 40 ++++++++----------- .../components/klantinteracties/openapi.yaml | 16 ++++---- src/openklant/components/utils/mixins.py | 2 +- src/openklant/utils/tests/test_validators.py | 9 ++--- src/openklant/utils/validators.py | 2 +- 7 files changed, 41 insertions(+), 56 deletions(-) diff --git a/src/openklant/components/contactgegevens/migrations/0006_organisatie_adres_huisnummer_and_more.py b/src/openklant/components/contactgegevens/migrations/0006_organisatie_adres_huisnummer_and_more.py index 2fe056c5..7974aaaa 100644 --- a/src/openklant/components/contactgegevens/migrations/0006_organisatie_adres_huisnummer_and_more.py +++ b/src/openklant/components/contactgegevens/migrations/0006_organisatie_adres_huisnummer_and_more.py @@ -77,12 +77,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -139,12 +138,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -203,11 +201,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -260,11 +257,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", diff --git a/src/openklant/components/contactgegevens/openapi.yaml b/src/openklant/components/contactgegevens/openapi.yaml index f1e95425..6ffb53ae 100644 --- a/src/openklant/components/contactgegevens/openapi.yaml +++ b/src/openklant/components/contactgegevens/openapi.yaml @@ -403,8 +403,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 @@ -690,8 +690,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 diff --git a/src/openklant/components/klantinteracties/migrations/0028_betrokkene_bezoekadres_huisnummer_and_more.py b/src/openklant/components/klantinteracties/migrations/0028_betrokkene_bezoekadres_huisnummer_and_more.py index eb775eeb..b92a0480 100644 --- a/src/openklant/components/klantinteracties/migrations/0028_betrokkene_bezoekadres_huisnummer_and_more.py +++ b/src/openklant/components/klantinteracties/migrations/0028_betrokkene_bezoekadres_huisnummer_and_more.py @@ -97,12 +97,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -159,12 +158,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -221,12 +219,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -283,12 +280,11 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, null=True, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -347,11 +343,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -404,11 +399,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -461,11 +455,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", @@ -518,11 +511,10 @@ class Migration(migrations.Migration): field=models.CharField( blank=True, help_text="Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id).", - max_length=6, + max_length=7, validators=[ openklant.utils.validators.CustomRegexValidator( - message="Ongeldige postcode", - regex="^[1-9][0-9]{3} ?[a-zA-Z]{2}$", + message="Ongeldige postcode", regex="^[1-9][0-9]{3} ?[A-Z]{2}$" ) ], verbose_name="postcode", diff --git a/src/openklant/components/klantinteracties/openapi.yaml b/src/openklant/components/klantinteracties/openapi.yaml index b5c1a08f..0ec7b91c 100644 --- a/src/openklant/components/klantinteracties/openapi.yaml +++ b/src/openklant/components/klantinteracties/openapi.yaml @@ -3265,8 +3265,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 @@ -3422,8 +3422,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 @@ -4744,8 +4744,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 @@ -4800,8 +4800,8 @@ components: type: string description: Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id). - pattern: ^[1-9][0-9]{3} ?[a-zA-Z]{2}$ - maxLength: 6 + 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 diff --git a/src/openklant/components/utils/mixins.py b/src/openklant/components/utils/mixins.py index 76a6e0d8..adebe4e4 100644 --- a/src/openklant/components/utils/mixins.py +++ b/src/openklant/components/utils/mixins.py @@ -103,7 +103,7 @@ def create_prefixed_mixin(prefix: str): "Postcode van het adres (indien het een Nederlands adres betreft zonder BAG-id)." ), validators=[validate_postal_code], - max_length=6, + max_length=7, blank=True, ), "stad": models.CharField( diff --git a/src/openklant/utils/tests/test_validators.py b/src/openklant/utils/tests/test_validators.py index ca86abba..cf197a78 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,8 @@ def test_validate_postal_code(self): "1111,a", '1111"a', '1111"aa', + "1111 Aa", + "1111 aA", ] for invalid_postal_code in invalid_postal_codes: self.assertRaisesMessage( @@ -68,12 +71,6 @@ def test_validate_postal_code(self): 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..9617631f 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.