Skip to content

Commit

Permalink
🎨 [#66] changed gegevensgroeptypes into model mixins
Browse files Browse the repository at this point in the history
  • Loading branch information
bart-maykin committed Oct 17, 2023
1 parent f6d526d commit 3144436
Show file tree
Hide file tree
Showing 3 changed files with 181 additions and 375 deletions.
166 changes: 3 additions & 163 deletions src/openklant/components/klantinteracties/models/klantcontacten.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import uuid

from django.core.validators import MinLengthValidator, validate_integer
from django.core.validators import validate_integer
from django.db import models
from django.utils.translation import gettext_lazy as _

from vng_api_common.descriptors import GegevensGroepType

from .actoren import Actor
from .constants import Initiator, Klantcontrol
from .digitaal_adres import DigitaalAdres
from .mixins import BezoekAdresMixin, ContactNaamMixin, CorrespondentieAdresMixin


class Klantcontact(models.Model):
Expand Down Expand Up @@ -112,7 +111,7 @@ class Meta:
verbose_name_plural = _("klantcontacten")


class Betrokkene(models.Model):
class Betrokkene(BezoekAdresMixin, CorrespondentieAdresMixin, ContactNaamMixin):
id = models.UUIDField(
primary_key=True,
unique=True,
Expand Down Expand Up @@ -154,164 +153,5 @@ class Betrokkene(models.Model):
blank=True,
)

# Contactnaam model fields:
contactnaam_voorletters = models.CharField(
_("Voorletters"),
help_text=_(
"Een afkorting van de voornamen. Meestal de beginletter, maar in sommige gevallen "
"de beginletter gecombineerd met de tweede letter van een voornaam."
),
max_length=10,
)
contactnaam_voornaam = models.CharField(
_("Voornaam"),
help_text=_(
"De voornaam die de persoon wil gebruiken tijdens communicatie met de gemeente."
),
max_length=200,
blank=True,
)
contactnaam_voorvoegsel_achternaam = models.CharField(
_("Voorvoegsel achternaam"),
help_text=_(
"Een eventueel voorvoegsel dat hoort bij de achternaam die de persoon "
"wil gebruiken tijdens communicatie met de gemeente."
),
max_length=10,
blank=True,
)
contactnaam_achternaam = models.CharField(
_("Achternaam"),
help_text=_(
"Een achternaam die de persoon wil gebruiken tijdens communicatie met de gemeente."
),
max_length=200,
blank=True,
)

# Correspondentieadres model fields:
correspondentieadres_nummeraanduiding_id = models.UUIDField(
verbose_name=_("Nummeraanduiding ID"),
help_text=_(
"Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen."
),
unique=True,
blank=True,
null=True,
)
correspondentieadres_adresregel1 = models.CharField(
_("Adresregel 1"),
help_text=_(
"Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_adresregel2 = models.CharField(
_("Adresregel 2"),
help_text=_(
"Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_adresregel3 = models.CharField(
_("Adresregel 3"),
help_text=_(
"Derde van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_land = models.CharField(
_("Land"),
help_text=_(
"Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) "
"aangeeft alwaar de ingeschrevene verblijft."
),
validators=[
MinLengthValidator(limit_value=4),
validate_integer,
],
max_length=4,
blank=True,
)

# Bezoekadres model fields:
bezoekadres_nummeraanduiding_id = models.UUIDField(
verbose_name=_("Nummeraanduiding ID"),
help_text=_(
"Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen."
),
unique=True,
blank=True,
null=True,
)
bezoekadres_adresregel1 = models.CharField(
_("Adresregel 1"),
help_text=_(
"Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_adresregel2 = models.CharField(
_("Adresregel 2"),
help_text=_(
"Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_adresregel3 = models.CharField(
_("Adresregel 3"),
help_text=_(
"Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_land = models.IntegerField(
_("Land"),
help_text=_(
"Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) "
"aangeeft alwaar de ingeschrevene verblijft."
),
validators=[
MinLengthValidator(limit_value=4),
validate_integer,
],
max_length=4,
blank=True,
)

# Group types:
Contactnaam = GegevensGroepType(
{
"voorletters": contactnaam_voorletters,
"voornaam": contactnaam_voornaam,
"voorvoegsel achternaam": contactnaam_voorvoegsel_achternaam,
"achternaam": contactnaam_achternaam,
}
)
correspondentieadres = GegevensGroepType(
{
"nummeraanduiding id": correspondentieadres_nummeraanduiding_id,
"adresregel 1": correspondentieadres_adresregel1,
"adresregel 2": correspondentieadres_adresregel2,
"adresregel 3": correspondentieadres_adresregel3,
"land": correspondentieadres_land,
},
)
bezoekadres = GegevensGroepType(
{
"nummeraanduiding id": bezoekadres_nummeraanduiding_id,
"adresregel 1": bezoekadres_adresregel1,
"adresregel 2": bezoekadres_adresregel2,
"adresregel 3": bezoekadres_adresregel3,
"land": bezoekadres_land,
}
)

class Meta:
verbose_name = _("betrokkene bij klantcontact")
173 changes: 173 additions & 0 deletions src/openklant/components/klantinteracties/models/mixins.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,182 @@
from django.core.validators import MinLengthValidator, validate_integer
from django.db import models
from django.utils.translation import gettext_lazy as _

from vng_api_common.descriptors import GegevensGroepType


class BezoekAdresMixin(models.Model):
bezoekadres_nummeraanduiding_id = models.UUIDField(
verbose_name=_("Nummeraanduiding ID"),
help_text=_(
"Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen."
),
unique=True,
blank=True,
null=True,
)
bezoekadres_adresregel1 = models.CharField(
_("Adresregel 1"),
help_text=_(
"Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_adresregel2 = models.CharField(
_("Adresregel 2"),
help_text=_(
"Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_adresregel3 = models.CharField(
_("Adresregel 3"),
help_text=_(
"Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
bezoekadres_land = models.CharField(
_("Land"),
help_text=_(
"Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) "
"aangeeft alwaar de ingeschrevene verblijft."
),
validators=[
MinLengthValidator(limit_value=4),
validate_integer,
],
max_length=4,
blank=True,
)

bezoekadres = GegevensGroepType(
{
"nummeraanduiding id": bezoekadres_nummeraanduiding_id,
"adresregel 1": bezoekadres_adresregel1,
"adresregel 2": bezoekadres_adresregel2,
"adresregel 3": bezoekadres_adresregel3,
"land": bezoekadres_land,
}
)

class Meta:
abstract = True


class CorrespondentieAdresMixin(models.Model):
correspondentieadres_nummeraanduiding_id = models.UUIDField(
verbose_name=_("Nummeraanduiding ID"),
help_text=_(
"Identificatie van het adres bij de Basisregistratie Adressen en Gebouwen."
),
unique=True,
blank=True,
null=True,
)
correspondentieadres_adresregel1 = models.CharField(
_("Adresregel 1"),
help_text=_(
"Eerste deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_adresregel2 = models.CharField(
_("Adresregel 2"),
help_text=_(
"Tweede deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_adresregel3 = models.CharField(
_("Adresregel 3"),
help_text=_(
"Derde deel van het adres dat niet voorkomt in de Basisregistratie Adressen en Gebouwen."
),
max_length=80,
blank=True,
)
correspondentieadres_land = models.CharField(
_("Land"),
help_text=_(
"Een code, opgenomen in Tabel 34, Landentabel, die het land (buiten Nederland) "
"aangeeft alwaar de ingeschrevene verblijft."
),
validators=[
MinLengthValidator(limit_value=4),
validate_integer,
],
max_length=4,
blank=True,
)

correspondentieadres = GegevensGroepType(
{
"nummeraanduiding id": correspondentieadres_nummeraanduiding_id,
"adresregel 1": correspondentieadres_adresregel1,
"adresregel 2": correspondentieadres_adresregel2,
"adresregel 3": correspondentieadres_adresregel3,
"land": correspondentieadres_land,
},
)

class Meta:
abstract = True


class ContactNaamMixin(models.Model):
contactnaam_voorletters = models.CharField(
_("Voorletters"),
help_text=_(
"Een afkorting van de voornamen. Meestal de beginletter, maar in sommige gevallen "
"de beginletter gecombineerd met de tweede letter van een voornaam."
),
max_length=10,
)
contactnaam_voornaam = models.CharField(
_("Voornaam"),
help_text=_(
"De voornaam die de persoon wil gebruiken tijdens communicatie met de gemeente."
),
max_length=200,
blank=True,
)
contactnaam_voorvoegsel_achternaam = models.CharField(
_("Voorvoegsel achternaam"),
help_text=_(
"Een eventueel voorvoegsel dat hoort bij de achternaam die de persoon "
"wil gebruiken tijdens communicatie met de gemeente."
),
max_length=10,
blank=True,
)
contactnaam_achternaam = models.CharField(
_("Achternaam"),
help_text=_(
"Een achternaam die de persoon wil gebruiken tijdens communicatie met de gemeente."
),
max_length=200,
blank=True,
)

Contactnaam = GegevensGroepType(
{
"voorletters": contactnaam_voorletters,
"voornaam": contactnaam_voornaam,
"voorvoegsel achternaam": contactnaam_voorvoegsel_achternaam,
"achternaam": contactnaam_achternaam,
}
)

class Meta:
abstract = True


class ActorIdentifcatorMixin(models.Model):
actoridentifcator_objecttype = models.CharField(
_("Objecttype"),
Expand Down
Loading

0 comments on commit 3144436

Please sign in to comment.