Skip to content

Commit

Permalink
🚚 [#147] Rename convenience endpoint to MaakKlantcontact
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenbal committed Oct 24, 2024
1 parent 34d3558 commit 88f23a4
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 124 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -539,24 +539,24 @@ def create(self, validated_data):
return super().create(validated_data)


class BetrokkeneConvenienceSerializer(BetrokkeneSerializer):
class BetrokkeneKlantcontactReadOnlySerializer(BetrokkeneSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.fields["had_klantcontact"].read_only = True


class OnderwerpobjectConvenienceSerializer(OnderwerpobjectSerializer):
class OnderwerpobjectKlantcontactReadOnlySerializer(OnderwerpobjectSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.fields["klantcontact"].read_only = True


class KlantContactConvenienceSerializer(serializers.Serializer):
class MaakKlantcontactSerializer(serializers.Serializer):
klantcontact = KlantcontactSerializer()
betrokkene = BetrokkeneConvenienceSerializer(required=False)
onderwerpobject = OnderwerpobjectConvenienceSerializer(required=False)
betrokkene = BetrokkeneKlantcontactReadOnlySerializer(required=False)
onderwerpobject = OnderwerpobjectKlantcontactReadOnlySerializer(required=False)

@transaction.atomic
def create(self, validated_data):
Expand All @@ -570,7 +570,6 @@ def create(self, validated_data):
betrokkene = None
if betrokkene_data := validated_data.pop("betrokkene", None):
betrokkene_data["had_klantcontact"] = {"uuid": str(klantcontact.uuid)}
# TODO for some reason `was_partij` is converted to `partij` by the serializer
betrokkene_data.setdefault(
"was_partij", betrokkene_data.get("partij", None)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1481,9 +1481,9 @@ def test_destroy_actorklantcontact(self):
self.assertEqual(data["count"], 0)


class ConvenienceEndpointTests(APITestCase):
class MaakKlantcontactEndpointTests(APITestCase):
maxDiff = None
url = reverse("klantinteracties:klantcontact-convenience-list")
url = reverse("klantinteracties:maak-klantcontact-list")

def test_create_success(self):
post_data = {
Expand Down
8 changes: 4 additions & 4 deletions src/openklant/components/klantinteracties/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
ActorKlantcontactViewSet,
BetrokkeneViewSet,
BijlageViewSet,
KlantContactConvenienceViewSet,
KlantcontactViewSet,
MaakKlantcontactViewSet,
OnderwerpobjectViewSet,
)
from openklant.components.klantinteracties.api.viewsets.partijen import (
Expand Down Expand Up @@ -50,9 +50,9 @@
router.register("onderwerpobjecten", OnderwerpobjectViewSet)
router.register("bijlagen", BijlageViewSet)
router.register(
"klantcontact-convenience",
KlantContactConvenienceViewSet,
basename="klantcontact-convenience",
"maak-klantcontact",
MaakKlantcontactViewSet,
basename="maak-klantcontact",
)

router.register("internetaken", InterneTaakViewSet)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
ActorKlantcontactSerializer,
BetrokkeneSerializer,
BijlageSerializer,
KlantContactConvenienceSerializer,
KlantcontactSerializer,
MaakKlantcontactSerializer,
OnderwerpobjectSerializer,
)
from openklant.components.klantinteracties.models.actoren import ActorKlantcontact
Expand Down Expand Up @@ -265,19 +265,19 @@ class ActorKlantcontactViewSet(viewsets.ModelViewSet):
permission_classes = (TokenPermissions,)


@extend_schema(tags=["klantcontact-convenience"])
@extend_schema(tags=["maak-klantcontact"])
@extend_schema_view(
create=extend_schema(
summary="Maak een KlantContact, Betrokkene en een OnderwerpObject aan.",
description="Maak een KlantContact, Betrokkene en een OnderwerpObject aan.",
),
)
class KlantContactConvenienceViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
class MaakKlantcontactViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
"""
Convenience endpoint om in één request een Betrokkene, KlantContact en een OnderwerpObject
Endpoint om in één request een Klantcontact met een Betrokkene en een OnderwerpObject
aan te maken. De aangemaakte objecten worden automatisch aan elkaar gekoppeld.
"""

serializer_class = KlantContactConvenienceSerializer
serializer_class = MaakKlantcontactSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (TokenPermissions,)
214 changes: 107 additions & 107 deletions src/openklant/components/klantinteracties/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1547,28 +1547,6 @@ paths:
responses:
'204':
description: No response body
/klantcontact-convenience:
post:
operationId: klantcontactConvenienceCreate
description: Maak een KlantContact, Betrokkene en een OnderwerpObject aan.
summary: Maak een KlantContact, Betrokkene en een OnderwerpObject aan.
tags:
- klantcontact-convenience
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KlantContactConvenience'
required: true
security:
- tokenAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/KlantContactConvenience'
description: ''
/klantcontacten:
get:
operationId: klantcontactenList
Expand Down Expand Up @@ -1854,6 +1832,28 @@ paths:
responses:
'204':
description: No response body
/maak-klantcontact:
post:
operationId: maakKlantcontactCreate
description: Maak een KlantContact, Betrokkene en een OnderwerpObject aan.
summary: Maak een KlantContact, Betrokkene en een OnderwerpObject aan.
tags:
- maak-klantcontact

Check warning on line 1841 in src/openklant/components/klantinteracties/openapi.yaml

View workflow job for this annotation

GitHub Actions / Run with component klantinteracties

operation-tag-defined Operation tags should be defined in global tags.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MaakKlantcontact'
required: true
security:
- tokenAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/MaakKlantcontact'
description: ''
/onderwerpobjecten:
get:
operationId: onderwerpobjectenList
Expand Down Expand Up @@ -3008,7 +3008,64 @@ components:
- uuid
- volledigeNaam
- wasPartij
BetrokkeneConvenience:
BetrokkeneCorrespondentieadres:
type: object
description: |-
Generate a serializer out of a GegevensGroepType.
Usage::
>>> class VerlengingSerializer(GegevensGroepSerializer):
... class Meta:
... model = Zaak
... gegevensgroep = 'verlenging'
>>>
Where ``Zaak.verlenging`` is a :class:``GegevensGroepType``.
properties:
nummeraanduidingId:
type: string
description: Identificatie van het adres bij de Basisregistratie Adressen
en Gebouwen.
maxLength: 255
adresregel1:
type: string
description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
adresregel2:
type: string
description: Tweede deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
adresregel3:
type: string
description: Derde deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
land:
type: string
description: Een code, opgenomen in Tabel 34, Landentabel, die het land
(buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.
maxLength: 4
minLength: 4
BetrokkeneForeignKey:
type: object
properties:
uuid:
type: string
format: uuid
description: Unieke (technische) identificatiecode van de betrokkene bij
klantcontact.
url:
type: string
format: uri
readOnly: true
description: De unieke URL van deze betrokkene binnen deze API.
required:
- url
- uuid
BetrokkeneKlantcontactReadOnly:
type: object
description: |-
Set gegevensgroepdata from validated nested data.
Expand Down Expand Up @@ -3089,63 +3146,6 @@ components:
- uuid
- volledigeNaam
- wasPartij
BetrokkeneCorrespondentieadres:
type: object
description: |-
Generate a serializer out of a GegevensGroepType.
Usage::
>>> class VerlengingSerializer(GegevensGroepSerializer):
... class Meta:
... model = Zaak
... gegevensgroep = 'verlenging'
>>>
Where ``Zaak.verlenging`` is a :class:``GegevensGroepType``.
properties:
nummeraanduidingId:
type: string
description: Identificatie van het adres bij de Basisregistratie Adressen
en Gebouwen.
maxLength: 255
adresregel1:
type: string
description: Eerste deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
adresregel2:
type: string
description: Tweede deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
adresregel3:
type: string
description: Derde deel van het adres dat niet voorkomt in de Basisregistratie
Adressen en Gebouwen.
maxLength: 80
land:
type: string
description: Een code, opgenomen in Tabel 34, Landentabel, die het land
(buiten Nederland) aangeeft alwaar de ingeschrevene verblijft.
maxLength: 4
minLength: 4
BetrokkeneForeignKey:
type: object
properties:
uuid:
type: string
format: uuid
description: Unieke (technische) identificatiecode van de betrokkene bij
klantcontact.
url:
type: string
format: uri
readOnly: true
description: De unieke URL van deze betrokkene binnen deze API.
required:
- url
- uuid
Bezoekadres:
type: object
description: |-
Expand Down Expand Up @@ -3653,17 +3653,6 @@ components:
required:
- url
- uuid
KlantContactConvenience:
type: object
properties:
klantcontact:
$ref: '#/components/schemas/Klantcontact'
betrokkene:
$ref: '#/components/schemas/BetrokkeneConvenience'
onderwerpobject:
$ref: '#/components/schemas/OnderwerpobjectConvenience'
required:
- klantcontact
Klantcontact:
type: object
properties:
Expand Down Expand Up @@ -3776,6 +3765,17 @@ components:
required:
- url
- uuid
MaakKlantcontact:
type: object
properties:
klantcontact:
$ref: '#/components/schemas/Klantcontact'
betrokkene:
$ref: '#/components/schemas/BetrokkeneKlantcontactReadOnly'
onderwerpobject:
$ref: '#/components/schemas/OnderwerpobjectKlantcontactReadOnly'
required:
- klantcontact
Onderwerpobject:
type: object
description: |-
Expand Down Expand Up @@ -3814,7 +3814,22 @@ components:
- url
- uuid
- wasKlantcontact
OnderwerpobjectConvenience:
OnderwerpobjectForeignKey:
type: object
properties:
uuid:
type: string
format: uuid
description: Unieke (technische) identificatiecode van het onderwerpdeel.
url:
type: string
format: uri
readOnly: true
description: De unieke URL van dit onderwerp object binnen deze API.
required:
- url
- uuid
OnderwerpobjectKlantcontactReadOnly:
type: object
description: |-
Set gegevensgroepdata from validated nested data.
Expand Down Expand Up @@ -3853,21 +3868,6 @@ components:
- url
- uuid
- wasKlantcontact
OnderwerpobjectForeignKey:
type: object
properties:
uuid:
type: string
format: uuid
description: Unieke (technische) identificatiecode van het onderwerpdeel.
url:
type: string
format: uri
readOnly: true
description: De unieke URL van dit onderwerp object binnen deze API.
required:
- url
- uuid
Onderwerpobjectidentificator:
type: object
description: |-
Expand Down

0 comments on commit 88f23a4

Please sign in to comment.