Skip to content

Commit b575b10

Browse files
authored
Merge pull request #599 from maykinmedia/feature/475/bijlage-klantcontact-filter
Feature/475/bijlage klantcontact filter
2 parents ec15802 + 32a18b4 commit b575b10

5 files changed

Lines changed: 111 additions & 16 deletions

File tree

src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,65 @@ def test_destroy_bijlage(self):
12831283
data = response.json()
12841284
self.assertEqual(data["count"], 0)
12851285

1286+
def test_filter_bijlage_by_all_identificator_fields(self):
1287+
list_url = reverse("klantinteracties:bijlage-list")
1288+
1289+
obj = BijlageFactory.create(
1290+
bijlageidentificator_code_objecttype="typeA",
1291+
bijlageidentificator_code_soort_object_id="soortA",
1292+
bijlageidentificator_object_id="idA",
1293+
bijlageidentificator_code_register="regA",
1294+
)
1295+
BijlageFactory.create(
1296+
bijlageidentificator_code_objecttype="typeB",
1297+
bijlageidentificator_code_soort_object_id="soortB",
1298+
bijlageidentificator_object_id="idB",
1299+
bijlageidentificator_code_register="regB",
1300+
)
1301+
1302+
response = self.client.get(list_url)
1303+
self.assertEqual(response.status_code, status.HTTP_200_OK)
1304+
data = response.json()
1305+
self.assertEqual(len(data["results"]), 2)
1306+
1307+
filters = {
1308+
"bijlageidentificatorCodeObjecttype": "typeA",
1309+
"bijlageidentificatorCodeSoortObjectId": "soortA",
1310+
"bijlageidentificatorObjectId": "idA",
1311+
"bijlageidentificatorCodeRegister": "regA",
1312+
}
1313+
1314+
for key, value in filters.items():
1315+
with self.subTest(f"Filter by {key}={value}"):
1316+
response = self.client.get(list_url, {key: value})
1317+
self.assertEqual(
1318+
response.status_code, status.HTTP_200_OK, response.data
1319+
)
1320+
data = response.json()
1321+
self.assertEqual(len(data["results"]), 1)
1322+
self.assertEqual(data["results"][0]["uuid"], str(obj.uuid))
1323+
1324+
with self.subTest("Filter with no match"):
1325+
response = self.client.get(
1326+
list_url, {"bijlageidentificatorCodeObjecttype": "typeC"}
1327+
)
1328+
self.assertEqual(response.status_code, status.HTTP_200_OK)
1329+
self.assertEqual(len(response.json()["results"]), 0)
1330+
1331+
def test_filter_bijlage_by_klantcontact_uuid(self):
1332+
list_url = reverse("klantinteracties:bijlage-list")
1333+
1334+
obj = BijlageFactory.create()
1335+
BijlageFactory.create()
1336+
1337+
response = self.client.get(
1338+
list_url, {"klantcontact__uuid": str(obj.klantcontact.uuid)}
1339+
)
1340+
self.assertEqual(response.status_code, status.HTTP_200_OK)
1341+
data = response.json()
1342+
self.assertEqual(len(data["results"]), 1)
1343+
self.assertEqual(data["results"][0]["uuid"], str(obj.uuid))
1344+
12861345

12871346
class OnderwerpobjectTests(APITestCase):
12881347
def test_list_onderwerpobject(self):

src/openklant/components/klantinteracties/api/viewsets/klantcontacten.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,7 @@ class BijlageViewSet(CheckQueryParamsMixin, viewsets.ModelViewSet):
636636
"bijlageidentificator_code_objecttype",
637637
"bijlageidentificator_code_register",
638638
"bijlageidentificator_code_soort_object_id",
639+
"klantcontact__uuid",
639640
]
640641
authentication_classes = (TokenAuthentication,)
641642
permission_classes = (TokenPermissions,)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Generated by Django 5.2.12 on 2026-04-13 16:34
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('klantinteracties', '0043_alter_partijidentificator_sub_identificator_van'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='bijlage',
15+
name='bijlageidentificator_code_objecttype',
16+
field=models.CharField(blank=True, help_text="Type van het object, bijvoorbeeld: 'DOCUMENT'.", max_length=200, verbose_name='code objecttype'),
17+
),
18+
migrations.AlterField(
19+
model_name='bijlage',
20+
name='bijlageidentificator_code_register',
21+
field=models.CharField(blank=True, help_text="Binnen het landschap van registers unieke omschrijving van het register waarin het object is geregistreerd, bijvoorbeeld: 'open-zaak'.", max_length=200, verbose_name='code register'),
22+
),
23+
migrations.AlterField(
24+
model_name='bijlage',
25+
name='bijlageidentificator_code_soort_object_id',
26+
field=models.CharField(blank=True, help_text="Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'uuid'.", max_length=200, verbose_name='code soort object ID'),
27+
),
28+
migrations.AlterField(
29+
model_name='bijlage',
30+
name='bijlageidentificator_object_id',
31+
field=models.CharField(blank=True, help_text="Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '9193b03f-93c2-4bfc-badf-b61494bd31d6'.", max_length=200, verbose_name='object ID'),
32+
),
33+
]

src/openklant/components/klantinteracties/models/klantcontacten.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -286,32 +286,30 @@ class Bijlage(APIMixin, models.Model):
286286
bijlageidentificator_object_id = models.CharField(
287287
_("object ID"),
288288
help_text=_(
289-
"Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '123456788'."
289+
"Waarde van de eigenschap die het object identificeert, bijvoorbeeld: '9193b03f-93c2-4bfc-badf-b61494bd31d6'."
290290
),
291291
max_length=200,
292292
blank=True,
293293
)
294294
bijlageidentificator_code_objecttype = models.CharField(
295295
_("code objecttype"),
296-
help_text=_(
297-
"Type van het object, bijvoorbeeld: 'INGESCHREVEN NATUURLIJK PERSOON'."
298-
),
296+
help_text=_("Type van het object, bijvoorbeeld: 'DOCUMENT'."),
299297
max_length=200,
300298
blank=True,
301299
)
302300
bijlageidentificator_code_register = models.CharField(
303301
_("code register"),
304302
help_text=_(
305303
"Binnen het landschap van registers unieke omschrijving van het register waarin "
306-
"het object is geregistreerd, bijvoorbeeld: 'BRP'."
304+
"het object is geregistreerd, bijvoorbeeld: 'open-zaak'."
307305
),
308306
max_length=200,
309307
blank=True,
310308
)
311309
bijlageidentificator_code_soort_object_id = models.CharField(
312310
_("code soort object ID"),
313311
help_text=_(
314-
"Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'Burgerservicenummer'."
312+
"Naam van de eigenschap die het object identificeert, bijvoorbeeld: 'uuid'."
315313
),
316314
max_length=200,
317315
blank=True,

src/openklant/components/klantinteracties/openapi.yaml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -804,26 +804,31 @@ paths:
804804
name: bijlageidentificatorCodeObjecttype
805805
schema:
806806
type: string
807-
description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK
808-
PERSOON''.'
807+
description: 'Type van het object, bijvoorbeeld: ''DOCUMENT''.'
809808
- in: query
810809
name: bijlageidentificatorCodeRegister
811810
schema:
812811
type: string
813812
description: 'Binnen het landschap van registers unieke omschrijving van het
814-
register waarin het object is geregistreerd, bijvoorbeeld: ''BRP''.'
813+
register waarin het object is geregistreerd, bijvoorbeeld: ''open-zaak''.'
815814
- in: query
816815
name: bijlageidentificatorCodeSoortObjectId
817816
schema:
818817
type: string
819818
description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld:
820-
''Burgerservicenummer''.'
819+
''uuid''.'
821820
- in: query
822821
name: bijlageidentificatorObjectId
823822
schema:
824823
type: string
825824
description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld:
826-
''123456788''.'
825+
''9193b03f-93c2-4bfc-badf-b61494bd31d6''.'
826+
- in: query
827+
name: klantcontact__uuid
828+
schema:
829+
type: string
830+
format: uuid
831+
description: Unieke (technische) identificatiecode van de betrokkene bij klantcontact.
827832
- name: page
828833
required: false
829834
in: query
@@ -4527,22 +4532,21 @@ components:
45274532
objectId:
45284533
type: string
45294534
description: 'Waarde van de eigenschap die het object identificeert, bijvoorbeeld:
4530-
''123456788''.'
4535+
''9193b03f-93c2-4bfc-badf-b61494bd31d6''.'
45314536
maxLength: 200
45324537
codeObjecttype:
45334538
type: string
4534-
description: 'Type van het object, bijvoorbeeld: ''INGESCHREVEN NATUURLIJK
4535-
PERSOON''.'
4539+
description: 'Type van het object, bijvoorbeeld: ''DOCUMENT''.'
45364540
maxLength: 200
45374541
codeRegister:
45384542
type: string
45394543
description: 'Binnen het landschap van registers unieke omschrijving van
4540-
het register waarin het object is geregistreerd, bijvoorbeeld: ''BRP''.'
4544+
het register waarin het object is geregistreerd, bijvoorbeeld: ''open-zaak''.'
45414545
maxLength: 200
45424546
codeSoortObjectId:
45434547
type: string
45444548
description: 'Naam van de eigenschap die het object identificeert, bijvoorbeeld:
4545-
''Burgerservicenummer''.'
4549+
''uuid''.'
45464550
maxLength: 200
45474551
BlankEnum:
45484552
enum:

0 commit comments

Comments
 (0)