diff --git a/src/openklant/components/klantinteracties/migrations/0004_digitaaladres.py b/src/openklant/components/klantinteracties/migrations/0004_digitaaladres.py new file mode 100644 index 00000000..886e5bce --- /dev/null +++ b/src/openklant/components/klantinteracties/migrations/0004_digitaaladres.py @@ -0,0 +1,80 @@ +# Generated by Django 3.2.18 on 2023-10-11 15:47 + +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + dependencies = [ + ("klantinteracties", "0003_betrokkene"), + ] + + operations = [ + migrations.CreateModel( + name="DigitaalAdres", + fields=[ + ( + "id", + models.UUIDField( + default=uuid.uuid4, + help_text="Unieke (technische) identificatiecode van het digitaal adres.", + primary_key=True, + serialize=False, + unique=True, + ), + ), + ( + "soort_digitaal_adres", + models.CharField( + help_text="Typering van het digitale adres die aangeeft via welk(e) kanaal of kanalen met dit adres contact kan worden opgenomen.", + max_length=254, + verbose_name="Soort digitaal adres", + ), + ), + ( + "adres", + models.CharField( + help_text="Digitaal adres waarmee een persoon of organisatie bereikt kan worden.", + max_length=80, + verbose_name="Adres", + ), + ), + ( + "omschrijving", + models.CharField( + help_text="Omschrijving van het digitaal adres.", + max_length=40, + verbose_name="Omschrijving", + ), + ), + ], + options={ + "verbose_name": "digitaal adres", + }, + ), + migrations.AddField( + model_name="betrokkene", + name="digitaal_adres", + field=models.ForeignKey( + help_text="'Digitaal Adres' had 'Betrokkene bij klantcontact'", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="partijen", + to="klantinteracties.digitaaladres", + verbose_name="Digitaal adres", + ), + ), + migrations.AddField( + model_name="partij", + name="digitaal_adres", + field=models.ForeignKey( + help_text="'Digitaal Adres' was 'Partij'", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="digitale_adressen", + to="klantinteracties.digitaaladres", + verbose_name="Digitaal adres", + ), + ), + ] diff --git a/src/openklant/components/klantinteracties/models/__init__.py b/src/openklant/components/klantinteracties/models/__init__.py index e87e3b09..7167c60a 100644 --- a/src/openklant/components/klantinteracties/models/__init__.py +++ b/src/openklant/components/klantinteracties/models/__init__.py @@ -1,2 +1,3 @@ +from .digitaal_adres import * # noqa from .klantcontacten import * # noqa from .partijen import * # noqa diff --git a/src/openklant/components/klantinteracties/models/digitaal_adres.py b/src/openklant/components/klantinteracties/models/digitaal_adres.py new file mode 100644 index 00000000..12f172c6 --- /dev/null +++ b/src/openklant/components/klantinteracties/models/digitaal_adres.py @@ -0,0 +1,39 @@ +import uuid + +from django.db import models +from django.utils.translation import gettext_lazy as _ + + +class DigitaalAdres(models.Model): + id = models.UUIDField( + primary_key=True, + unique=True, + default=uuid.uuid4, + help_text=_("Unieke (technische) identificatiecode van het digitaal adres."), + ) + soort_digitaal_adres = models.CharField( + _("Soort digitaal adres"), + help_text=_( + "Typering van het digitale adres die aangeeft via welk(e) kanaal of kanalen " + "met dit adres contact kan worden opgenomen." + ), + max_length=254, + ) + adres = models.CharField( + _("Adres"), + help_text=_( + "Digitaal adres waarmee een persoon of organisatie bereikt kan worden." + ), + max_length=80, + ) + omschrijving = models.CharField( + _("Omschrijving"), + help_text=_("Omschrijving van het digitaal adres."), + max_length=40, + ) + + class Meta: + verbose_name = _("digitaal adres") + + def __str__(self): + return self.adres diff --git a/src/openklant/components/klantinteracties/models/klantcontacten.py b/src/openklant/components/klantinteracties/models/klantcontacten.py index 37bd849f..a75e1565 100644 --- a/src/openklant/components/klantinteracties/models/klantcontacten.py +++ b/src/openklant/components/klantinteracties/models/klantcontacten.py @@ -7,6 +7,7 @@ from vng_api_common.descriptors import GegevensGroepType from .constants import Initiator, Klantcontrol +from .digitaal_adres import DigitaalAdres class Klantcontact(models.Model): @@ -108,7 +109,14 @@ class Betrokkene(models.Model): help_text=_("'Klantcontact' had 'Betrokkene bij klantcontact'"), null=False, ) - # TODO: Add fk to Digital adres + digitaal_adres = models.ForeignKey( + DigitaalAdres, + on_delete=models.CASCADE, + verbose_name=_("Digitaal adres"), + related_name="partijen", + help_text=_("'Digitaal Adres' had 'Betrokkene bij klantcontact'"), + null=True, + ) rol = models.CharField( _("Rol"), help_text=_( diff --git a/src/openklant/components/klantinteracties/models/partijen.py b/src/openklant/components/klantinteracties/models/partijen.py index ac453531..fb346b69 100644 --- a/src/openklant/components/klantinteracties/models/partijen.py +++ b/src/openklant/components/klantinteracties/models/partijen.py @@ -7,6 +7,7 @@ from vng_api_common.descriptors import GegevensGroepType from .constants import SoortPartij +from .digitaal_adres import DigitaalAdres from .klantcontacten import Betrokkene @@ -25,6 +26,14 @@ class Partij(models.Model): help_text=_("'Betrokkene bij klantcontact' was 'Partij'"), null=True, ) + digitaal_adres = models.ForeignKey( + DigitaalAdres, + on_delete=models.CASCADE, + verbose_name=_("Digitaal adres"), + related_name="digitale_adressen", + help_text=_("'Digitaal Adres' was 'Partij'"), + null=True, + ) nummer = models.CharField( _("Nummer"), help_text=_(