Skip to content

Commit 09c551c

Browse files
[#267] Created tests for bsn and fixed old
1 parent f4d1bdb commit 09c551c

File tree

5 files changed

+470
-135
lines changed

5 files changed

+470
-135
lines changed

src/openklant/components/klantinteracties/admin/partijen.py

+19-13
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
from django import forms
22
from django.contrib import admin
3-
from django.core.exceptions import ValidationError
43
from django.utils.translation import gettext_lazy as _
54

65
from openklant.components.klantinteracties.models.rekeningnummers import Rekeningnummer
76
from openklant.components.klantinteracties.models.validators import (
8-
PartijIdentificatorValidator,
9-
SubIdentificatorValidator,
7+
PartijIdentificatorTypesValidator,
8+
PartijIdentificatorUniquenessValidator,
109
)
1110

1211
from ..models.constants import SoortPartij
@@ -41,17 +40,24 @@ def clean(self):
4140
"code_register": cleaned_data["partij_identificator_code_register"],
4241
}
4342

44-
if sub_identificator_van == self.instance:
45-
# TODO MESSAGE
46-
raise ValidationError({"sub_identificator_van": "your_error_message 1"})
43+
PartijIdentificatorTypesValidator(
44+
partij_identificator=partij_identificator
45+
).validate()
46+
47+
queryset = PartijIdentificator.objects.exclude()
48+
if self.instance:
49+
queryset = queryset.exclude(pk=self.instance.pk)
50+
PartijIdentificatorUniquenessValidator(
51+
queryset=(
52+
PartijIdentificator.objects.exclude(pk=self.instance.pk)
53+
if self.instance
54+
else PartijIdentificator.objects.all()
55+
),
56+
partij_identificator=partij_identificator,
57+
sub_identificator_van=sub_identificator_van,
58+
instance=self.instance,
59+
).check()
4760

48-
PartijIdentificatorValidator()(partij_identificator)
49-
SubIdentificatorValidator()(
50-
{
51-
"sub_identificator_van": sub_identificator_van,
52-
"partij_identificator": partij_identificator,
53-
}
54-
)
5561
return cleaned_data
5662

5763

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

+29-20
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@
4343
)
4444
from openklant.components.klantinteracties.models.rekeningnummers import Rekeningnummer
4545
from openklant.components.klantinteracties.models.validators import (
46-
PartijIdentificatorValidator,
47-
SubIdentificatorValidator,
46+
PartijIdentificatorTypesValidator,
47+
PartijIdentificatorUniquenessValidator,
4848
)
49+
from openklant.utils.serializers import get_field_value
4950

5051

5152
class PartijForeignkeyBaseSerializer(serializers.HyperlinkedModelSerializer):
@@ -364,7 +365,7 @@ class PartijIdentificatorGroepTypeSerializer(GegevensGroepSerializer):
364365
class Meta:
365366
model = PartijIdentificator
366367
gegevensgroep = "partij_identificator"
367-
validators = [PartijIdentificatorValidator()]
368+
validators = []
368369

369370

370371
class PartijIdentificatorSerializer(
@@ -387,9 +388,7 @@ class PartijIdentificatorSerializer(
387388
sub_identificator_van = PartijIdentificatorForeignkeySerializer(
388389
required=False,
389390
allow_null=True,
390-
help_text=_(
391-
"Partij-identificatoren TEST CONTROLLA die hoorde bij deze partij."
392-
),
391+
help_text=_("Relatie sub_identificator_van"),
393392
)
394393

395394
class Meta:
@@ -410,36 +409,46 @@ class Meta:
410409
"help_text": "De unieke URL van deze partij indentificator binnen deze API.",
411410
},
412411
}
413-
validators = [SubIdentificatorValidator()]
414412

415413
def validate(self, attrs):
416-
if sub_identificator_van := attrs.get("sub_identificator_van", None):
417-
attrs["sub_identificator_van"] = PartijIdentificator.objects.filter(
414+
instance = getattr(self, "instance", None)
415+
partij_identificator = get_field_value(self, attrs, "partij_identificator")
416+
sub_identificator_van = get_field_value(self, attrs, "sub_identificator_van")
417+
if sub_identificator_van:
418+
sub_identificator_van = PartijIdentificator.objects.get(
418419
uuid=sub_identificator_van["uuid"]
419420
)
420-
421-
SubIdentificatorValidator()(attrs)
421+
PartijIdentificatorTypesValidator(
422+
partij_identificator=partij_identificator
423+
).validate()
424+
PartijIdentificatorUniquenessValidator(
425+
queryset=(
426+
PartijIdentificator.objects.exclude(pk=instance.pk)
427+
if instance
428+
else PartijIdentificator.objects.all()
429+
),
430+
partij_identificator=partij_identificator,
431+
sub_identificator_van=sub_identificator_van,
432+
instance=instance,
433+
).check()
422434
return super().validate(attrs)
423435

424436
@transaction.atomic
425437
def update(self, instance, validated_data):
426-
if "partij" in validated_data:
427-
if partij := validated_data.pop("partij", None):
428-
validated_data["partij"] = Partij.objects.get(
429-
uuid=str(partij.get("uuid"))
430-
)
438+
if partij := validated_data.get("partij", None):
439+
validated_data["partij"] = Partij.objects.get(uuid=partij["uuid"])
431440

432441
return super().update(instance, validated_data)
433442

434443
@transaction.atomic
435444
def create(self, validated_data):
436445
if sub_identificator_van := validated_data.get("sub_identificator_van", None):
437-
validated_data["sub_identificator_van"] = (
438-
PartijIdentificator.objects.filter(uuid=sub_identificator_van["uuid"])
446+
validated_data["sub_identificator_van"] = PartijIdentificator.objects.get(
447+
uuid=sub_identificator_van["uuid"]
439448
)
440449

441-
partij_uuid = str(validated_data.pop("partij").get("uuid"))
442-
validated_data["partij"] = Partij.objects.get(uuid=partij_uuid)
450+
if partij := validated_data.get("partij", None):
451+
validated_data["partij"] = Partij.objects.get(uuid=partij["uuid"])
443452

444453
return super().create(validated_data)
445454

0 commit comments

Comments
 (0)