Skip to content

Commit

Permalink
Fix return type
Browse files Browse the repository at this point in the history
  • Loading branch information
patrick91 authored and zbyte64 committed Mar 20, 2019
1 parent d94be13 commit 0e6fa16
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 8 deletions.
27 changes: 21 additions & 6 deletions graphene_django/forms/mutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,7 @@ def __init_subclass_with_meta__(
input_fields
)

# TODO: output

output_fields = OrderedDict()

if hasattr(form, '_meta') and hasattr(form._meta, 'model'):
model = form._meta.model
Expand All @@ -141,15 +140,31 @@ def __init_subclass_with_meta__(

if not return_field_name:
model_name = model.__name__

return_field_name = model_name[:1].lower() + model_name[1:]

output_fields = OrderedDict()
# TODO: model_type might be none

output_fields[return_field_name] = graphene.Field(model_type)
else:
# TODO: return field name support
output_fields = fields_for_form(form, only_fields, exclude_fields)
form_name = form.__class__.__name__

if not return_field_name:
return_field_name = form_name[:1].lower() + form_name[1:]

# TODO: registry

form_fields = fields_for_form(
form, only_fields, exclude_fields
)

form_type = type(
form_name,
(graphene.ObjectType, ),
yank_fields_from_attrs(form_fields, _as=graphene.Field),
)

return_field_name = 'TODOFROMForm' if not return_field_name else return_field_name
output_fields[return_field_name] = graphene.Field(form_type)

output_fields['errors'] = graphene.Field(cls.Errors, required=True)

Expand Down
14 changes: 12 additions & 2 deletions graphene_django/forms/tests/test_mutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ class MyMutation(DjangoFormMutation):
class Meta:
form_class = MyForm

assert "text" in MyMutation._meta.fields

assert "myForm" in MyMutation._meta.fields
assert 'text' in MyMutation._meta.fields['myForm'].type._meta.fields

def test_has_input_fields():
class MyMutation(DjangoFormMutation):
Expand Down Expand Up @@ -96,6 +96,16 @@ class Meta:
assert FilmDetailsMutation._meta.return_field_name == "filmDetails"


def test_custom_return_field_name():
class MyFormMutation(DjangoFormMutation):
class Meta:
form_class = MyForm
return_field_name = "cat"

assert MyFormMutation._meta.return_field_name == "cat"
assert "cat" in MyFormMutation._meta.fields


def test_custom_return_field_name_model_form():
class FilmDetailsMutation(DjangoFormMutation):
class Meta:
Expand Down

0 comments on commit 0e6fa16

Please sign in to comment.