@@ -21,10 +21,24 @@ class ResourceIdentifierSerializer(Serializer):
21
21
id = CharField (max_length = 64 )
22
22
type = CharField (max_length = 256 )
23
23
24
+ default_error_messages = {
25
+ 'wrong_type' : _ ('Expected resource of following types: {expected_types}. Got {received_type}.' ),
26
+ }
27
+
28
+ def __init__ (self , * args , ** kwargs ):
29
+ self .expected_types = kwargs .pop ('expected_types' , None )
30
+ super (ResourceIdentifierSerializer , self ).__init__ (* args , ** kwargs )
31
+
24
32
def to_internal_value (self , data ):
25
33
ret = super (ResourceIdentifierSerializer , self ).to_internal_value (data )
26
34
return ResourceIdentifier (ret ['type' ], ret ['id' ])
27
35
36
+ def validate_type (self , resource_type ):
37
+ if self .expected_types is not None and resource_type not in self .expected_types :
38
+ raise ValidationError (self .error_messages ['wrong_type' ].format (expected_types = self .expected_types ,
39
+ received_type = resource_type ))
40
+ return resource_type
41
+
28
42
29
43
class ResourceIdentifierObjectSerializer (BaseSerializer ):
30
44
default_error_messages = {
0 commit comments