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

View File

@ -8,8 +8,9 @@ from ...utils import to_camel_case
from ..classtypes.base import FieldsClassType from ..classtypes.base import FieldsClassType
from ..classtypes.inputobjecttype import InputObjectType from ..classtypes.inputobjecttype import InputObjectType
from ..classtypes.mutation import Mutation from ..classtypes.mutation import Mutation
from ..exceptions import SkipField
from .argument import ArgumentsGroup, snake_case_args 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 from .definitions import NonNull
@ -146,3 +147,14 @@ class InputField(NamedType, OrderedType):
return GraphQLInputObjectField( return GraphQLInputObjectField(
schema.T(self.type), schema.T(self.type),
default_value=self.default, description=self.description) 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)