Skip to content

Commit c9a3775

Browse files
committed
wip: Add fields._field_args first
1 parent 09a6aad commit c9a3775

File tree

4 files changed

+75
-5
lines changed

4 files changed

+75
-5
lines changed

graphene_mongo/fields.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ def args(self):
7272
def args(self, args):
7373
self._base_args = args
7474

75-
@property
76-
def field_args(self):
75+
def _field_args(self, items):
7776
def is_filterable(v):
7877
return not isinstance(v, (ConnectionField, Dynamic))
7978

@@ -82,16 +81,35 @@ def get_type(v):
8281
return v.type.of_type()
8382
return v.type()
8483

85-
return {k: get_type(v) for k, v in self.fields.items()
86-
if is_filterable(v)}
84+
return {k: get_type(v) for k, v in items if is_filterable(v)}
85+
86+
@property
87+
def field_args(self):
88+
return self._field_args(self.fields.items())
8789

8890
@property
8991
def reference_args(self):
9092
def get_reference_field(r, kv):
9193
if callable(getattr(kv[1], 'get_type', None)):
9294
node = kv[1].get_type()._type._meta
95+
# print('abaw', kv[0], node)
96+
# print(node.__dict__)
97+
# print(node.fields['id'])
98+
# print(type(node.fields['id']))
99+
# print(node.fields['id']._type)
100+
# print(node.fields['id']._type.of_type())
101+
# print('?')
93102
r.update({kv[0]: node.fields['id']._type.of_type()})
103+
"""
104+
print('a', node.__dict__)
105+
print('b', kv[1])
106+
print('c', node)
107+
print('d', node.__dict__)
108+
"""
109+
# r.update({kv[0]: kv[1]._type.of_type()})
94110
return r
111+
print('waw', self.fields.items())
112+
# return {}
95113
return reduce(get_reference_field, self.fields.items(), {})
96114

97115
@property
@@ -107,6 +125,7 @@ def get_query(cls, model, info, **args):
107125
objs = model.objects()
108126

109127
if args:
128+
print('here!!!!')
110129
reference_fields = get_model_reference_fields(model)
111130
reference_args = {}
112131
for arg_name, arg in args.copy().items():
@@ -115,6 +134,7 @@ def get_query(cls, model, info, **args):
115134
pk = from_global_id(args.pop(arg_name))[-1]
116135
reference_obj = reference_model.document_type_obj.objects(pk=pk).get()
117136
reference_args[arg_name] = reference_obj
137+
print('reference_args', reference_args)
118138

119139
args.update(reference_args)
120140
first = args.pop('first', None)

graphene_mongo/tests/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class ProfessorVector(Document):
9191

9292
meta = {'collection': 'test_professor_vector'}
9393
vec = ListField(FloatField())
94+
last_name = StringField()
9495
metadata = EmbeddedDocumentField(ProfessorMetadata)
9596

9697

graphene_mongo/tests/test_relay_query.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import pytest
23

34
import graphene
45

@@ -11,7 +12,8 @@
1112
PlayerNode,
1213
ReporterNode,
1314
ChildNode,
14-
ParentWithRelationshipNode)
15+
ParentWithRelationshipNode,
16+
ProfessorVectorNode,)
1517
from ..fields import MongoengineConnectionField
1618

1719

@@ -726,3 +728,39 @@ class Query(graphene.ObjectType):
726728
assert not result.errors
727729
assert json.dumps(result.data, sort_keys=True) == json.dumps(
728730
expected, sort_keys=True)
731+
732+
@pytest.mark.skip(reason="no way of currently testing this")
733+
def test_should_query_with_embedded_document(fixtures):
734+
735+
class Query(graphene.ObjectType):
736+
737+
all_professors = MongoengineConnectionField(ProfessorVectorNode)
738+
739+
query = '''
740+
query EditorQuery {
741+
allProfessors() {
742+
edges {
743+
node {
744+
vec
745+
}
746+
}
747+
}
748+
}
749+
'''
750+
expected = {
751+
'allProfessors': {
752+
'edges': [
753+
{
754+
'node': {
755+
# 'id': 'abc',
756+
'vec': [1.0, 2.3]
757+
}
758+
759+
}
760+
]
761+
}
762+
}
763+
schema = graphene.Schema(query=Query)
764+
result = schema.execute(query)
765+
# assert not result.errors
766+
# assert dict(result.data['allProfessors']) == expected['allProfessors']

graphene_mongo/tests/types.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,24 +106,35 @@ class Meta:
106106

107107

108108
class ChildNode(MongoengineObjectType):
109+
109110
class Meta:
110111
model = Child
111112
interfaces = (Node,)
112113

113114

114115
class ChildRegisteredBeforeNode(MongoengineObjectType):
116+
115117
class Meta:
116118
model = ChildRegisteredBefore
117119
interfaces = (Node, )
118120

119121

120122
class ParentWithRelationshipNode(MongoengineObjectType):
123+
121124
class Meta:
122125
model = ParentWithRelationship
123126
interfaces = (Node, )
124127

125128

126129
class ChildRegisteredAfterNode(MongoengineObjectType):
130+
127131
class Meta:
128132
model = ChildRegisteredAfter
129133
interfaces = (Node, )
134+
135+
136+
class ProfessorVectorNode(MongoengineObjectType):
137+
138+
class Meta:
139+
model = ProfessorVector
140+
interfaces = (Node, )

0 commit comments

Comments
 (0)