29
29
from openklant .components .klantinteracties .models .digitaal_adres import DigitaalAdres
30
30
from openklant .components .klantinteracties .models .partijen import (
31
31
Categorie ,
32
+ CategorieRelatie ,
32
33
Contactpersoon ,
33
34
Organisatie ,
34
35
Partij ,
@@ -67,17 +68,50 @@ class CategorieForeignKeySerializer(serializers.HyperlinkedModelSerializer):
67
68
68
69
class Meta :
69
70
model = Categorie
70
- fields = ("uuid" , "url" )
71
+ fields = (
72
+ "uuid" ,
73
+ "url" ,
74
+ "naam" ,
75
+ )
71
76
extra_kwargs = {
72
77
"uuid" : {"required" : True , "validators" : [categorie_exists ]},
73
78
"url" : {
74
79
"view_name" : "klantinteracties:categorie-detail" ,
75
80
"lookup_field" : "uuid" ,
76
81
"help_text" : _ ("De unieke URL van deze categorie binnen deze API." ),
77
82
},
83
+ "naam" : {"read_only" : True },
78
84
}
79
85
80
86
87
+ class CategorieRelatieForeignKeySerializer (serializers .HyperlinkedModelSerializer ):
88
+ """Let op: Dit attribuut is EXPERIMENTEEL."""
89
+
90
+ categorie_naam = serializers .SerializerMethodField (
91
+ help_text = _ ("De naam van de gelinkte categorie." )
92
+ )
93
+
94
+ class Meta :
95
+ model = Categorie
96
+ fields = (
97
+ "uuid" ,
98
+ "url" ,
99
+ "categorie_naam" ,
100
+ )
101
+ extra_kwargs = {
102
+ "uuid" : {"required" : True , "validators" : [categorie_exists ]},
103
+ "url" : {
104
+ "view_name" : "klantinteracties:categorie-detail" ,
105
+ "lookup_field" : "uuid" ,
106
+ "help_text" : _ ("De unieke URL van deze categorie binnen deze API." ),
107
+ },
108
+ }
109
+
110
+ def get_categorie_naam (self , obj ):
111
+ if obj .categorie :
112
+ return obj .categorie .naam
113
+
114
+
81
115
class PartijIdentificatorForeignkeySerializer (serializers .HyperlinkedModelSerializer ):
82
116
class Meta :
83
117
model = PartijIdentificator
@@ -131,10 +165,35 @@ class Meta:
131
165
class CategorieSerializer (serializers .HyperlinkedModelSerializer ):
132
166
"""Let op: Dit endpoint is EXPERIMENTEEL."""
133
167
168
+ class Meta :
169
+ model = Categorie
170
+ fields = (
171
+ "uuid" ,
172
+ "url" ,
173
+ "naam" ,
174
+ )
175
+ extra_kwargs = {
176
+ "uuid" : {"read_only" : True },
177
+ "url" : {
178
+ "view_name" : "klantinteracties:categorie-detail" ,
179
+ "lookup_field" : "uuid" ,
180
+ "help_text" : _ ("De unieke URL van deze categorie binnen deze API." ),
181
+ },
182
+ }
183
+
184
+
185
+ class CategorieRelatieSerializer (serializers .HyperlinkedModelSerializer ):
186
+ """Let op: Dit endpoint is EXPERIMENTEEL."""
187
+
134
188
partij = PartijForeignkeyBaseSerializer (
135
189
required = True ,
136
190
allow_null = True ,
137
- help_text = _ ("De partij waar de categorie aan gelinkt is." ),
191
+ help_text = _ ("De partij waar de categorie relatie aan gelinkt is." ),
192
+ )
193
+ categorie = CategorieForeignKeySerializer (
194
+ required = True ,
195
+ allow_null = True ,
196
+ help_text = _ ("De categorie waar de categorie relatie aan gelinkt is." ),
138
197
)
139
198
begin_datum = serializers .DateField (
140
199
allow_null = True ,
@@ -146,12 +205,12 @@ class CategorieSerializer(serializers.HyperlinkedModelSerializer):
146
205
)
147
206
148
207
class Meta :
149
- model = Categorie
208
+ model = CategorieRelatie
150
209
fields = (
151
210
"uuid" ,
152
211
"url" ,
153
212
"partij" ,
154
- "naam " ,
213
+ "categorie " ,
155
214
"begin_datum" ,
156
215
"eind_datum" ,
157
216
)
@@ -172,6 +231,12 @@ def update(self, instance, validated_data):
172
231
173
232
validated_data ["partij" ] = partij
174
233
234
+ if "categorie" in validated_data :
235
+ if categorie := validated_data .pop ("categorie" , None ):
236
+ categorie = Categorie .objects .get (uuid = str (categorie .get ("uuid" )))
237
+
238
+ validated_data ["categorie" ] = categorie
239
+
175
240
return super ().update (instance , validated_data )
176
241
177
242
@transaction .atomic
@@ -184,7 +249,11 @@ def create(self, validated_data):
184
249
if partij := validated_data .pop ("partij" ):
185
250
partij = Partij .objects .get (uuid = str (partij .get ("uuid" )))
186
251
252
+ if categorie := validated_data .pop ("categorie" ):
253
+ categorie = Categorie .objects .get (uuid = str (categorie .get ("uuid" )))
254
+
187
255
validated_data ["partij" ] = partij
256
+ validated_data ["categorie" ] = categorie
188
257
189
258
return super ().create (validated_data )
190
259
@@ -355,13 +424,13 @@ class PartijSerializer(NestedGegevensGroepMixin, PolymorphicSerializer):
355
424
many = True ,
356
425
source = "betrokkene_set" ,
357
426
)
358
- categorieen = CategorieForeignKeySerializer (
427
+ categorie_relaties = CategorieRelatieForeignKeySerializer (
359
428
read_only = True ,
360
429
help_text = _ (
361
- "De Categorieën van een partij: Let op: Dit attribuut is EXPERIMENTEEL."
430
+ "De Categorie relaties van een partij: Let op: Dit attribuut is EXPERIMENTEEL."
362
431
),
363
432
many = True ,
364
- source = "categorie_set " ,
433
+ source = "categorierelatie_set " ,
365
434
)
366
435
digitale_adressen = DigitaalAdresForeignKeySerializer (
367
436
required = True ,
@@ -415,7 +484,7 @@ class PartijSerializer(NestedGegevensGroepMixin, PolymorphicSerializer):
415
484
# 1 level
416
485
"digitale_adressen" : f"{ SERIALIZER_PATH } .digitaal_adres.DigitaalAdresSerializer" ,
417
486
"betrokkenen" : f"{ SERIALIZER_PATH } .klantcontacten.BetrokkeneSerializer" ,
418
- "categorieen " : f"{ SERIALIZER_PATH } .partijen.CategorieSerializer " ,
487
+ "categorie_relaties " : f"{ SERIALIZER_PATH } .partijen.CategorieRelatieSerializer " ,
419
488
# 2 levels
420
489
"betrokkenen.had_klantcontact" : f"{ SERIALIZER_PATH } .klantcontacten.KlantcontactSerializer" ,
421
490
# 3 levels
@@ -430,7 +499,7 @@ class Meta:
430
499
"nummer" ,
431
500
"interne_notitie" ,
432
501
"betrokkenen" ,
433
- "categorieen " ,
502
+ "categorie_relaties " ,
434
503
"digitale_adressen" ,
435
504
"voorkeurs_digitaal_adres" ,
436
505
"vertegenwoordigde" ,
0 commit comments