Moved scalar definitions

This commit is contained in:
Syrus Akbary 2016-06-22 23:25:09 -07:00
parent 1737089c6d
commit 3529fcb29b
3 changed files with 21 additions and 16 deletions

View File

@ -1,4 +1,4 @@
from .definitions import GrapheneInterfaceType, GrapheneObjectType
from .definitions import GrapheneInterfaceType, GrapheneObjectType, GrapheneScalarType
def generate_interface(interface):
@ -20,3 +20,15 @@ def generate_objecttype(objecttype):
is_type_of=objecttype.is_type_of,
interfaces=objecttype._meta.get_interfaces
)
def generate_scalar(scalar):
return GrapheneScalarType(
graphene_type=scalar,
name=scalar._meta.name or scalar.__name__,
description=scalar._meta.description or scalar.__doc__,
serialize=getattr(scalar, 'serialize', None),
parse_value=getattr(scalar, 'parse_value', None),
parse_literal=getattr(scalar, 'parse_literal', None),
)

View File

@ -1,4 +1,4 @@
from graphql import GraphQLObjectType, GraphQLInterfaceType
from graphql import GraphQLObjectType, GraphQLInterfaceType, GraphQLScalarType
class GrapheneGraphQLType(object):
@ -27,3 +27,7 @@ class GrapheneObjectType(GrapheneGraphQLType, GraphQLObjectType):
for interface in self._provided_interfaces:
if isinstance(interface, GrapheneInterfaceType):
interface.graphene_type.implements(self.graphene_type)
class GrapheneScalarType(GrapheneGraphQLType, GraphQLScalarType):
pass

View File

@ -1,16 +1,13 @@
import six
from graphql import (GraphQLBoolean, GraphQLFloat, GraphQLID, GraphQLInt,
GraphQLScalarType, GraphQLString)
GraphQLString)
from ..utils.is_base_type import is_base_type
from .definitions import GrapheneGraphQLType
from .options import Options
from .unmountedtype import UnmountedType
class GrapheneScalarType(GrapheneGraphQLType, GraphQLScalarType):
pass
from ..generators import generate_scalar
class ScalarTypeMeta(type):
@ -33,15 +30,7 @@ class ScalarTypeMeta(type):
cls = super_new(cls, name, bases, dict(attrs, _meta=options))
if not options.graphql_type:
options.graphql_type = GrapheneScalarType(
graphene_type=cls,
name=cls._meta.name or cls.__name__,
description=cls._meta.description or cls.__doc__,
serialize=getattr(cls, 'serialize', None),
parse_value=getattr(cls, 'parse_value', None),
parse_literal=getattr(cls, 'parse_literal', None),
)
options.graphql_type = generate_scalar(cls)
return cls