Skip to content

Commit d10895d

Browse files
committed
Refactor converter
1 parent c389924 commit d10895d

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

graphene_django/rest_framework/serializer_converter.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,49 +24,45 @@ def convert_serializer_to_input_type(serializer_class):
2424

2525

2626
@singledispatch
27-
def convert_serializer_field(field):
27+
def get_graphene_type_from_serializer_field(field):
2828
raise ImproperlyConfigured(
2929
"Don't know how to convert the serializer field %s (%s) "
3030
"to Graphene type" % (field, field.__class__)
3131
)
3232

3333

34-
def required_if_input_and_required(func):
34+
def convert_serializer_field(field, is_input=True):
3535
"""
36-
Marks the field as required if we are creating an input type
36+
Converts a django rest frameworks field to a graphql field
37+
and marks the field as required if we are creating an input type
3738
and the field itself is required
3839
"""
3940

40-
def wrap(field, is_input=True):
41-
graphql_type = func(field)
41+
# TODO: sub types? kwargs
4242

43-
return graphql_type(
44-
description=field.help_text, required=is_input and field.required
45-
)
43+
graphql_type = get_graphene_type_from_serializer_field(field)
4644

47-
return wrap
45+
return graphql_type(
46+
description=field.help_text, required=is_input and field.required
47+
)
4848

4949

50-
@convert_serializer_field.register(serializers.Field)
51-
@required_if_input_and_required
50+
@get_graphene_type_from_serializer_field.register(serializers.Field)
5251
def convert_serializer_field_to_string(field):
5352
return graphene.String
5453

5554

56-
@convert_serializer_field.register(serializers.IntegerField)
57-
@required_if_input_and_required
55+
@get_graphene_type_from_serializer_field.register(serializers.IntegerField)
5856
def convert_serializer_field_to_int(field):
5957
return graphene.Int
6058

6159

62-
@convert_serializer_field.register(serializers.BooleanField)
63-
@required_if_input_and_required
60+
@get_graphene_type_from_serializer_field.register(serializers.BooleanField)
6461
def convert_serializer_field_to_bool(field):
6562
return graphene.Boolean
6663

6764

68-
@convert_serializer_field.register(serializers.FloatField)
69-
@convert_serializer_field.register(serializers.DecimalField)
70-
@required_if_input_and_required
65+
@get_graphene_type_from_serializer_field.register(serializers.FloatField)
66+
@get_graphene_type_from_serializer_field.register(serializers.DecimalField)
7167
def convert_serializer_field_to_float(field):
7268
return graphene.Float

0 commit comments

Comments
 (0)