From 153b25de94313d94f7aca95612527d26b1b6c6fe Mon Sep 17 00:00:00 2001 From: bart-maykin Date: Thu, 19 Oct 2023 17:30:11 +0200 Subject: [PATCH] :card_file_box: [#91] added PartijIdentificator model --- .../migrations/0003_partijidentificator.py | 91 +++++++++++++++++++ .../klantinteracties/models/partijen.py | 76 ++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 src/openklant/components/klantinteracties/migrations/0003_partijidentificator.py diff --git a/src/openklant/components/klantinteracties/migrations/0003_partijidentificator.py b/src/openklant/components/klantinteracties/migrations/0003_partijidentificator.py new file mode 100644 index 00000000..db5a5977 --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0003_partijidentificator.py @@ -0,0 +1,91 @@ +# Generated by Django 3.2.18 on 2023-10-19 15:29 + +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + dependencies = [ + ("klantinteracties", "0002_auto_20231019_1441"), + ] + + operations = [ + migrations.CreateModel( + name="PartijIdentificator", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "uuid", + models.UUIDField( + default=uuid.uuid4, + help_text="Unieke (technische) identificatiecode van de partij-identificator.", + unique=True, + ), + ), + ( + "andere_partij_identificator", + models.CharField( + blank=True, + help_text="Vrij tekstveld om de verwijzing naar een niet-voorgedefinieerd objecttype, soort objectID of Register vast te leggen. ", + max_length=200, + verbose_name="andere partij indetificator", + ), + ), + ( + "partij_identificator_objecttype", + models.CharField( + help_text="Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'.", + max_length=200, + verbose_name="objecttype", + ), + ), + ( + "partij_identificator_soort_object_id", + models.CharField( + help_text="Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'.", + max_length=200, + verbose_name="soort object id", + ), + ), + ( + "partij_identificator_object_id", + models.CharField( + help_text="Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'.", + max_length=200, + verbose_name="object id", + ), + ), + ( + "partij_identificator_register", + models.CharField( + help_text="Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'BRP'.", + max_length=200, + verbose_name="register", + ), + ), + ( + "partij", + models.ForeignKey( + help_text="'Partij' had 'PartijIdentificator'", + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="klantinteracties.partij", + verbose_name="partij", + ), + ), + ], + options={ + "verbose_name": "partij identificator", + "verbose_name_plural": "partij identificatoren", + }, + ), + ] diff --git a/src/openklant/components/klantinteracties/models/partijen.py b/src/openklant/components/klantinteracties/models/partijen.py index 80e99399..c03c855d 100644 --- a/src/openklant/components/klantinteracties/models/partijen.py +++ b/src/openklant/components/klantinteracties/models/partijen.py @@ -4,6 +4,8 @@ from django.db import models from django.utils.translation import gettext_lazy as _ +from vng_api_common.descriptors import GegevensGroepType + from .constants import SoortPartij from .digitaal_adres import DigitaalAdres from .klantcontacten import Betrokkene @@ -156,3 +158,77 @@ class Meta: def __str__(self) -> str: return self.contactnaam_voorletters + + +class PartijIdentificator(models.Model): + uuid = models.UUIDField( + unique=True, + default=uuid.uuid4, + help_text=_( + "Unieke (technische) identificatiecode van de partij-identificator." + ), + ) + partij = models.ForeignKey( + Partij, + on_delete=models.CASCADE, + verbose_name=_("partij"), + help_text=_("'Partij' had 'PartijIdentificator'"), + null=True, + ) + andere_partij_identificator = models.CharField( + _("andere partij indetificator"), + help_text=_( + "Vrij tekstveld om de verwijzing naar een niet-voorgedefinieerd objecttype, " + "soort objectID of Register vast te leggen. " + ), + max_length=200, + blank=True, + ) + + # Partij-identificator fields + partij_identificator_objecttype = models.CharField( + _("objecttype"), + help_text=_( + "Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'." + ), + max_length=200, + blank=False, + ) + partij_identificator_soort_object_id = models.CharField( + _("soort object id"), + help_text=_( + "Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'." + ), + max_length=200, + blank=False, + ) + partij_identificator_object_id = models.CharField( + _("object id"), + help_text=_( + "Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'." + ), + max_length=200, + blank=False, + ) + partij_identificator_register = models.CharField( + _("register"), + help_text=_( + "Binnen het landschap van registers unieke omschrijving van het register waarin " + "het object is geregistreerd, bijvoorbeeld: 'BRP'." + ), + max_length=200, + blank=False, + ) + + partij_identificator = GegevensGroepType( + { + "objecttype": partij_identificator_objecttype, + "soort_object_id": partij_identificator_soort_object_id, + "object_id": partij_identificator_object_id, + "register": partij_identificator_register, + } + ) + + class Meta: + verbose_name = _("partij identificator") + verbose_name_plural = _("partij identificatoren")