Moved fields to a named group

This commit is contained in:
Syrus Akbary 2015-12-06 01:34:56 -08:00
parent fae376cbb0
commit 21dffa4aa8
2 changed files with 19 additions and 10 deletions

View File

@ -5,7 +5,6 @@ from collections import OrderedDict
import six
from ..exceptions import SkipField
from .options import Options
@ -82,6 +81,11 @@ class FieldsOptions(Options):
def fields_map(self):
return OrderedDict([(f.attname, f) for f in self.fields])
@property
def fields_group_type(self):
from ..types.field import FieldsGroupType
return FieldsGroupType(*self.local_fields)
class FieldsClassTypeMeta(ClassTypeMeta):
options_class = FieldsOptions
@ -124,11 +128,4 @@ class FieldsClassType(six.with_metaclass(FieldsClassTypeMeta, ClassType)):
@classmethod
def fields_internal_types(cls, schema):
fields = []
for field in cls._meta.fields:
try:
fields.append((field.name, schema.T(field)))
except SkipField:
continue
return OrderedDict(fields)
return schema.T(cls._meta.fields_group_type)

View File

@ -8,8 +8,9 @@ from ...utils import to_camel_case
from ..classtypes.base import FieldsClassType
from ..classtypes.inputobjecttype import InputObjectType
from ..classtypes.mutation import Mutation
from ..exceptions import SkipField
from .argument import ArgumentsGroup, snake_case_args
from .base import LazyType, NamedType, MountType, OrderedType
from .base import LazyType, NamedType, MountType, OrderedType, GroupNamedType
from .definitions import NonNull
@ -146,3 +147,14 @@ class InputField(NamedType, OrderedType):
return GraphQLInputObjectField(
schema.T(self.type),
default_value=self.default, description=self.description)
class FieldsGroupType(GroupNamedType):
def internal_type(self, schema):
fields = []
for field in sorted(self.types):
try:
fields.append(self.get_named_type(schema, field))
except SkipField:
continue
return OrderedDict(fields)