Added InputObjectType and InputObjectField

This commit is contained in:
Syrus Akbary 2015-10-26 02:37:07 -07:00
parent ea5207d025
commit 2bab94d72f
2 changed files with 24 additions and 4 deletions

View File

@ -11,9 +11,10 @@ from graphql.core.type import (
GraphQLID,
GraphQLArgument,
GraphQLFloat,
GraphQLInputObjectField,
)
from graphene.utils import to_camel_case
from graphene.core.types import BaseObjectType
from graphene.core.types import BaseObjectType, InputObjectType
from graphene.core.scalars import GraphQLSkipField
@ -145,7 +146,12 @@ class Field(object):
return self.resolve(*args)
else:
resolver = self.resolve
return GraphQLField(
field_type = GraphQLField
if object_type and issubclass(object_type, InputObjectType):
field_type = GraphQLInputObjectField
return field_type(
internal_type,
description=description,
args=args,

View File

@ -5,6 +5,7 @@ from collections import OrderedDict
from graphql.core.type import (
GraphQLObjectType,
GraphQLInputObjectType,
GraphQLInterfaceType,
GraphQLArgument
)
@ -170,9 +171,8 @@ class BaseObjectType(object):
@memoize
@register_internal_type
def internal_type(cls, schema):
fields_list = cls._meta.fields
fields = lambda: OrderedDict([(f.name, f.internal_field(schema))
for f in fields_list])
for f in cls._meta.fields])
if cls._meta.is_interface:
return GraphQLInterfaceType(
cls._meta.type_name,
@ -200,3 +200,17 @@ class ObjectType(six.with_metaclass(ObjectTypeMeta, BaseObjectType)):
class Mutation(six.with_metaclass(ObjectTypeMeta, BaseObjectType)):
pass
class InputObjectType(ObjectType):
@classmethod
@memoize
@register_internal_type
def internal_type(cls, schema):
fields = lambda: OrderedDict([(f.name, f.internal_field(schema))
for f in cls._meta.fields])
return GraphQLInputObjectType(
cls._meta.type_name,
description=cls._meta.description,
fields=fields,
)