Skip to content

Commit a27774c

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

File tree

6 files changed

+144
-0
lines changed

6 files changed

+144
-0
lines changed

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

+26
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,19 @@ class Meta:
7777
model = Organisatie
7878
gegevensgroep = "adres"
7979

80+
def validate(self, attrs):
81+
if any(attrs.values()):
82+
if not attrs.get("nummeraanduiding_id"):
83+
raise serializers.ValidationError(
84+
{
85+
"nummeraanduiding_id": _(
86+
"nummeraanduiding_id is verplicht wanneer het adres ingevuld is."
87+
),
88+
}
89+
)
90+
91+
return super().validate(attrs)
92+
8093

8194
class OrganisatieSerializer(
8295
NestedGegevensGroepMixin,
@@ -141,6 +154,19 @@ class Meta:
141154
model = Persoon
142155
gegevensgroep = "adres"
143156

157+
def validate(self, attrs):
158+
if any(attrs.values()):
159+
if not attrs.get("nummeraanduiding_id"):
160+
raise serializers.ValidationError(
161+
{
162+
"nummeraanduiding_id": _(
163+
"nummeraanduiding_id is verplicht wanneer het adres ingevuld is."
164+
),
165+
}
166+
)
167+
168+
return super().validate(attrs)
169+
144170

145171
class PersoonSerializer(
146172
NestedGegevensGroepMixin,

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

+18
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ def test_create_persoon(self):
137137
"geslacht": "m",
138138
"voornamen": "Devin",
139139
"adres": {
140+
"nummeraanduidingId": "nummeraanduiding_id",
140141
"adresregel1": "adresregel1",
141142
"adresregel2": "adresregel2",
142143
"adresregel3": "adresregel3",
@@ -161,6 +162,7 @@ def test_create_persoon(self):
161162
self.assertEqual(
162163
data["adres"],
163164
{
165+
"nummeraanduidingId": "nummeraanduiding_id",
164166
"adresregel1": "adresregel1",
165167
"adresregel2": "adresregel2",
166168
"adresregel3": "adresregel3",
@@ -179,6 +181,7 @@ def test_update_persoon(self):
179181
geslacht="m",
180182
voorvoegsel="",
181183
voornamen="Devin",
184+
adres_nummeraanduiding_id="nummeraanduiding_id",
182185
adres_adresregel1="adresregel1",
183186
adres_adresregel2="adresregel2",
184187
adres_adresregel3="adresregel3",
@@ -206,6 +209,7 @@ def test_update_persoon(self):
206209
self.assertEqual(
207210
data["adres"],
208211
{
212+
"nummeraanduidingId": "nummeraanduiding_id",
209213
"adresregel1": "adresregel1",
210214
"adresregel2": "adresregel2",
211215
"adresregel3": "adresregel3",
@@ -223,6 +227,7 @@ def test_update_persoon(self):
223227
"voorvoegsel": "changed",
224228
"voornamen": "changed",
225229
"adres": {
230+
"nummeraanduidingId": "changed",
226231
"adresregel1": "changed",
227232
"adresregel2": "changed",
228233
"adresregel3": "changed",
@@ -242,6 +247,7 @@ def test_update_persoon(self):
242247
self.assertEqual(
243248
data["adres"],
244249
{
250+
"nummeraanduidingId": "changed",
245251
"adresregel1": "changed",
246252
"adresregel2": "changed",
247253
"adresregel3": "changed",
@@ -260,6 +266,7 @@ def test_update_partial_persoon(self):
260266
geslacht="m",
261267
voorvoegsel="",
262268
voornamen="Devin",
269+
adres_nummeraanduiding_id="nummeraanduiding_id",
263270
adres_adresregel1="adresregel1",
264271
adres_adresregel2="adresregel2",
265272
adres_adresregel3="adresregel3",
@@ -287,6 +294,7 @@ def test_update_partial_persoon(self):
287294
self.assertEqual(
288295
data["adres"],
289296
{
297+
"nummeraanduidingId": "nummeraanduiding_id",
290298
"adresregel1": "adresregel1",
291299
"adresregel2": "adresregel2",
292300
"adresregel3": "adresregel3",
@@ -311,6 +319,7 @@ def test_update_partial_persoon(self):
311319
self.assertEqual(
312320
data["adres"],
313321
{
322+
"nummeraanduidingId": "nummeraanduiding_id",
314323
"adresregel1": "adresregel1",
315324
"adresregel2": "adresregel2",
316325
"adresregel3": "adresregel3",
@@ -330,6 +339,7 @@ def test_create_organisatie(self):
330339
"handelsnaam": "Devin Townsend",
331340
"oprichtingsdatum": "1996-03-12",
332341
"adres": {
342+
"nummeraanduidingId": "nummeraanduiding_id",
333343
"adresregel1": "adresregel1",
334344
"adresregel2": "adresregel2",
335345
"adresregel3": "adresregel3",
@@ -351,6 +361,7 @@ def test_create_organisatie(self):
351361
self.assertEqual(
352362
data["adres"],
353363
{
364+
"nummeraanduidingId": "nummeraanduiding_id",
354365
"adresregel1": "adresregel1",
355366
"adresregel2": "adresregel2",
356367
"adresregel3": "adresregel3",
@@ -366,6 +377,7 @@ def test_update_organisatie(self):
366377
handelsnaam="Devin Townsend",
367378
oprichtingsdatum="1996-03-12",
368379
opheffingsdatum=None,
380+
adres_nummeraanduiding_id="nummeraanduiding_id",
369381
adres_adresregel1="adresregel1",
370382
adres_adresregel2="adresregel2",
371383
adres_adresregel3="adresregel3",
@@ -390,6 +402,7 @@ def test_update_organisatie(self):
390402
self.assertEqual(
391403
data["adres"],
392404
{
405+
"nummeraanduidingId": "nummeraanduiding_id",
393406
"adresregel1": "adresregel1",
394407
"adresregel2": "adresregel2",
395408
"adresregel3": "adresregel3",
@@ -404,6 +417,7 @@ def test_update_organisatie(self):
404417
"oprichtingsdatum": "1996-03-13",
405418
"opheffingsdatum": "2023-11-22",
406419
"adres": {
420+
"nummeraanduidingId": "changed",
407421
"adresregel1": "changed",
408422
"adresregel2": "changed",
409423
"adresregel3": "changed",
@@ -420,6 +434,7 @@ def test_update_organisatie(self):
420434
self.assertEqual(
421435
data["adres"],
422436
{
437+
"nummeraanduidingId": "changed",
423438
"adresregel1": "changed",
424439
"adresregel2": "changed",
425440
"adresregel3": "changed",
@@ -435,6 +450,7 @@ def test_update_partial_organisatie(self):
435450
handelsnaam="Devin Townsend",
436451
oprichtingsdatum="1996-03-12",
437452
opheffingsdatum=None,
453+
adres_nummeraanduiding_id="nummeraanduiding_id",
438454
adres_adresregel1="adresregel1",
439455
adres_adresregel2="adresregel2",
440456
adres_adresregel3="adresregel3",
@@ -459,6 +475,7 @@ def test_update_partial_organisatie(self):
459475
self.assertEqual(
460476
data["adres"],
461477
{
478+
"nummeraanduidingId": "nummeraanduiding_id",
462479
"adresregel1": "adresregel1",
463480
"adresregel2": "adresregel2",
464481
"adresregel3": "adresregel3",
@@ -481,6 +498,7 @@ def test_update_partial_organisatie(self):
481498
self.assertEqual(
482499
data["adres"],
483500
{
501+
"nummeraanduidingId": "nummeraanduiding_id",
484502
"adresregel1": "adresregel1",
485503
"adresregel2": "adresregel2",
486504
"adresregel3": "adresregel3",
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

+16
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

+26
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 = "betrokkene correspondentieadres"
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

+26
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 = "partij correspondentieadres serializer"
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)