Skip to content

Commit adfd430

Browse files
committed
✨ [#132] added api validation to check if nummeraanduiding_id is given when gegevens groep is filled in
1 parent d0fb64a commit adfd430

File tree

6 files changed

+144
-0
lines changed

6 files changed

+144
-0
lines changed

src/openklant/components/contactgegevens/api/serializers.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,19 @@ class Meta:
1111
model = Organisatie
1212
gegevensgroep = "adres"
1313

14+
def validate(self, attrs):
15+
if any(attrs.values()):
16+
if not attrs.get("nummeraanduiding_id"):
17+
raise serializers.ValidationError(
18+
{
19+
"nummeraanduiding_id": _(
20+
"nummeraanduiding_id is verplicht wanneer het adres ingevuld is."
21+
),
22+
}
23+
)
24+
25+
return super().validate(attrs)
26+
1427

1528
class OrganisatieSerializer(
1629
NestedGegevensGroepMixin,
@@ -48,6 +61,19 @@ class Meta:
4861
model = Persoon
4962
gegevensgroep = "adres"
5063

64+
def validate(self, attrs):
65+
if any(attrs.values()):
66+
if not attrs.get("nummeraanduiding_id"):
67+
raise serializers.ValidationError(
68+
{
69+
"nummeraanduiding_id": _(
70+
"nummeraanduiding_id is verplicht wanneer het adres ingevuld is."
71+
),
72+
}
73+
)
74+
75+
return super().validate(attrs)
76+
5177

5278
class PersoonSerializer(
5379
NestedGegevensGroepMixin,

src/openklant/components/contactgegevens/api/tests/test_apis.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def test_create_persoon(self):
1818
"geslacht": "m",
1919
"voornamen": "Devin",
2020
"adres": {
21+
"nummeraanduidingId": "nummeraanduiding_id",
2122
"adresregel1": "adresregel1",
2223
"adresregel2": "adresregel2",
2324
"adresregel3": "adresregel3",
@@ -41,6 +42,7 @@ def test_create_persoon(self):
4142
self.assertEqual(
4243
data["adres"],
4344
{
45+
"nummeraanduidingId": "nummeraanduiding_id",
4446
"adresregel1": "adresregel1",
4547
"adresregel2": "adresregel2",
4648
"adresregel3": "adresregel3",
@@ -57,6 +59,7 @@ def test_update_persoon(self):
5759
geslacht="m",
5860
voorvoegsel="",
5961
voornamen="Devin",
62+
adres_nummeraanduiding_id="nummeraanduiding_id",
6063
adres_adresregel1="adresregel1",
6164
adres_adresregel2="adresregel2",
6265
adres_adresregel3="adresregel3",
@@ -83,6 +86,7 @@ def test_update_persoon(self):
8386
self.assertEqual(
8487
data["adres"],
8588
{
89+
"nummeraanduidingId": "nummeraanduiding_id",
8690
"adresregel1": "adresregel1",
8791
"adresregel2": "adresregel2",
8892
"adresregel3": "adresregel3",
@@ -99,6 +103,7 @@ def test_update_persoon(self):
99103
"voorvoegsel": "changed",
100104
"voornamen": "changed",
101105
"adres": {
106+
"nummeraanduidingId": "changed",
102107
"adresregel1": "changed",
103108
"adresregel2": "changed",
104109
"adresregel3": "changed",
@@ -117,6 +122,7 @@ def test_update_persoon(self):
117122
self.assertEqual(
118123
data["adres"],
119124
{
125+
"nummeraanduidingId": "changed",
120126
"adresregel1": "changed",
121127
"adresregel2": "changed",
122128
"adresregel3": "changed",
@@ -133,6 +139,7 @@ def test_update_partial_persoon(self):
133139
geslacht="m",
134140
voorvoegsel="",
135141
voornamen="Devin",
142+
adres_nummeraanduiding_id="nummeraanduiding_id",
136143
adres_adresregel1="adresregel1",
137144
adres_adresregel2="adresregel2",
138145
adres_adresregel3="adresregel3",
@@ -159,6 +166,7 @@ def test_update_partial_persoon(self):
159166
self.assertEqual(
160167
data["adres"],
161168
{
169+
"nummeraanduidingId": "nummeraanduiding_id",
162170
"adresregel1": "adresregel1",
163171
"adresregel2": "adresregel2",
164172
"adresregel3": "adresregel3",
@@ -182,6 +190,7 @@ def test_update_partial_persoon(self):
182190
self.assertEqual(
183191
data["adres"],
184192
{
193+
"nummeraanduidingId": "nummeraanduiding_id",
185194
"adresregel1": "adresregel1",
186195
"adresregel2": "adresregel2",
187196
"adresregel3": "adresregel3",
@@ -199,6 +208,7 @@ def test_create_organisatie(self):
199208
"handelsnaam": "Devin Townsend",
200209
"oprichtingsdatum": "1996-03-12",
201210
"adres": {
211+
"nummeraanduidingId": "nummeraanduiding_id",
202212
"adresregel1": "adresregel1",
203213
"adresregel2": "adresregel2",
204214
"adresregel3": "adresregel3",
@@ -219,6 +229,7 @@ def test_create_organisatie(self):
219229
self.assertEqual(
220230
data["adres"],
221231
{
232+
"nummeraanduidingId": "nummeraanduiding_id",
222233
"adresregel1": "adresregel1",
223234
"adresregel2": "adresregel2",
224235
"adresregel3": "adresregel3",
@@ -232,6 +243,7 @@ def test_update_organisatie(self):
232243
handelsnaam="Devin Townsend",
233244
oprichtingsdatum="1996-03-12",
234245
opheffingsdatum=None,
246+
adres_nummeraanduiding_id="nummeraanduiding_id",
235247
adres_adresregel1="adresregel1",
236248
adres_adresregel2="adresregel2",
237249
adres_adresregel3="adresregel3",
@@ -255,6 +267,7 @@ def test_update_organisatie(self):
255267
self.assertEqual(
256268
data["adres"],
257269
{
270+
"nummeraanduidingId": "nummeraanduiding_id",
258271
"adresregel1": "adresregel1",
259272
"adresregel2": "adresregel2",
260273
"adresregel3": "adresregel3",
@@ -268,6 +281,7 @@ def test_update_organisatie(self):
268281
"oprichtingsdatum": "1996-03-13",
269282
"opheffingsdatum": "2023-11-22",
270283
"adres": {
284+
"nummeraanduidingId": "changed",
271285
"adresregel1": "changed",
272286
"adresregel2": "changed",
273287
"adresregel3": "changed",
@@ -283,6 +297,7 @@ def test_update_organisatie(self):
283297
self.assertEqual(
284298
data["adres"],
285299
{
300+
"nummeraanduidingId": "changed",
286301
"adresregel1": "changed",
287302
"adresregel2": "changed",
288303
"adresregel3": "changed",
@@ -296,6 +311,7 @@ def test_update_partial_organisatie(self):
296311
handelsnaam="Devin Townsend",
297312
oprichtingsdatum="1996-03-12",
298313
opheffingsdatum=None,
314+
adres_nummeraanduiding_id="nummeraanduiding_id",
299315
adres_adresregel1="adresregel1",
300316
adres_adresregel2="adresregel2",
301317
adres_adresregel3="adresregel3",
@@ -319,6 +335,7 @@ def test_update_partial_organisatie(self):
319335
self.assertEqual(
320336
data["adres"],
321337
{
338+
"nummeraanduidingId": "nummeraanduiding_id",
322339
"adresregel1": "adresregel1",
323340
"adresregel2": "adresregel2",
324341
"adresregel3": "adresregel3",
@@ -340,6 +357,7 @@ def test_update_partial_organisatie(self):
340357
self.assertEqual(
341358
data["adres"],
342359
{
360+
"nummeraanduidingId": "nummeraanduiding_id",
343361
"adresregel1": "adresregel1",
344362
"adresregel2": "adresregel2",
345363
"adresregel3": "adresregel3",
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Generated by Django 3.2.23 on 2024-01-10 11:36
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("contactgegevens", "0001_initial"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="organisatie",
14+
name="adres_nummeraanduiding_id",
15+
field=models.CharField(
16+
blank=True,
17+
help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.",
18+
max_length=255,
19+
verbose_name="nummeraanduiding ID",
20+
),
21+
),
22+
migrations.AddField(
23+
model_name="persoon",
24+
name="adres_nummeraanduiding_id",
25+
field=models.CharField(
26+
blank=True,
27+
help_text="Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen.",
28+
max_length=255,
29+
verbose_name="nummeraanduiding ID",
30+
),
31+
),
32+
]

src/openklant/components/contactgegevens/mixins.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66

77

88
class AdresMixin(models.Model):
9+
adres_nummeraanduiding_id = models.CharField(
10+
_("nummeraanduiding ID"),
11+
help_text=_(
12+
"Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen."
13+
),
14+
max_length=255,
15+
blank=True,
16+
)
917
adres_adresregel1 = models.CharField(
1018
_("adresregel 1"),
1119
help_text=_(
@@ -46,11 +54,19 @@ class AdresMixin(models.Model):
4654

4755
adres = GegevensGroepType(
4856
{
57+
"nummeraanduiding_id": adres_nummeraanduiding_id,
4958
"adresregel_1": adres_adresregel1,
5059
"adresregel_2": adres_adresregel2,
5160
"adresregel_3": adres_adresregel3,
5261
"land": adres_land,
5362
},
63+
optional=(
64+
"nummeraanduiding_id",
65+
"adresregel_1",
66+
"adresregel_2",
67+
"adresregel_3",
68+
"land",
69+
),
5470
)
5571

5672
class Meta:

src/openklant/components/klantinteracties/api/serializers/klantcontacten.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,39 @@ class Meta:
123123
model = Betrokkene
124124
gegevensgroep = "bezoekadres"
125125

126+
def validate(self, attrs):
127+
if any(attrs.values()):
128+
if not attrs.get("nummeraanduiding_id"):
129+
raise serializers.ValidationError(
130+
{
131+
"nummeraanduiding_id": _(
132+
"nummeraanduiding_id is verplicht wanneer het bezoekadres ingevuld is."
133+
),
134+
}
135+
)
136+
137+
return super().validate(attrs)
138+
126139

127140
class CorrespondentieadresSerializer(GegevensGroepSerializer):
128141
class Meta:
129142
model = Betrokkene
130143
gegevensgroep = "correspondentieadres"
131144
ref_name = "BetrokkeneCorrespondentieadres"
132145

146+
def validate(self, attrs):
147+
if any(attrs.values()):
148+
if not attrs.get("nummeraanduiding_id"):
149+
raise serializers.ValidationError(
150+
{
151+
"nummeraanduiding_id": _(
152+
"nummeraanduiding_id is verplicht wanneer het correspondentieadres ingevuld is."
153+
),
154+
}
155+
)
156+
157+
return super().validate(attrs)
158+
133159

134160
class ContactnaamSerializer(GegevensGroepSerializer):
135161
class Meta:

src/openklant/components/klantinteracties/api/serializers/partijen.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,39 @@ class Meta:
9999
model = Partij
100100
gegevensgroep = "bezoekadres"
101101

102+
def validate(self, attrs):
103+
if any(attrs.values()):
104+
if not attrs.get("nummeraanduiding_id"):
105+
raise serializers.ValidationError(
106+
{
107+
"nummeraanduiding_id": _(
108+
"nummeraanduiding_id is verplicht wanneer het bezoekadres ingevuld is."
109+
),
110+
}
111+
)
112+
113+
return super().validate(attrs)
114+
102115

103116
class CorrespondentieadresSerializer(GegevensGroepSerializer):
104117
class Meta:
105118
model = Partij
106119
gegevensgroep = "correspondentieadres"
107120
ref_name = "PartijCorrespondentieadres"
108121

122+
def validate(self, attrs):
123+
if any(attrs.values()):
124+
if not attrs.get("nummeraanduiding_id"):
125+
raise serializers.ValidationError(
126+
{
127+
"nummeraanduiding_id": _(
128+
"nummeraanduiding_id is verplicht wanneer het correspondentieadres ingevuld is."
129+
),
130+
}
131+
)
132+
133+
return super().validate(attrs)
134+
109135

110136
class OrganisatieSerializer(serializers.ModelSerializer):
111137
class Meta:

0 commit comments

Comments
 (0)