Skip to content

Commit e7f2236

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

File tree

5 files changed

+126
-0
lines changed

5 files changed

+126
-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,
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)