24
24
FileFieldType ,
25
25
PointFieldType ,
26
26
MultiPolygonFieldType ,
27
- PolygonFieldType ,
27
+ PolygonFieldType , PointFieldInputType ,
28
28
)
29
29
from .converter import convert_mongoengine_field , MongoEngineConversionError
30
30
from .registry import get_global_registry
@@ -113,6 +113,7 @@ def is_filterable(k):
113
113
converted .type (),
114
114
(
115
115
FileFieldType ,
116
+ PointFieldType ,
116
117
MultiPolygonFieldType ,
117
118
graphene .Union ,
118
119
PolygonFieldType ,
@@ -172,12 +173,18 @@ def reference_args(self):
172
173
def get_reference_field (r , kv ):
173
174
field = kv [1 ]
174
175
mongo_field = getattr (self .model , kv [0 ], None )
176
+ if isinstance (mongo_field , mongoengine .PointField ):
177
+ r .update ({kv [0 ]: graphene .Argument (PointFieldInputType )})
178
+ return r
175
179
if isinstance (
176
180
mongo_field ,
177
181
(mongoengine .LazyReferenceField , mongoengine .ReferenceField , mongoengine .GenericReferenceField ),
178
182
):
179
183
r .update ({kv [0 ]: graphene .ID ()})
180
184
return r
185
+ if isinstance (mongo_field , mongoengine .GenericReferenceField ):
186
+ r .update ({kv [0 ]: graphene .ID ()})
187
+ return r
181
188
if callable (getattr (field , "get_type" , None )):
182
189
_type = field .get_type ()
183
190
if _type :
@@ -217,6 +224,8 @@ def get_queryset(self, model, info, required_fields=list(), skip=None, limit=Non
217
224
mongoengine .fields .PointField ):
218
225
location = args .pop (arg_name , None )
219
226
hydrated_references [arg_name ] = location ["coordinates" ]
227
+ if (arg_name .split ('__' )[0 ] + "__max_distance" ) not in args :
228
+ hydrated_references [arg_name .split ('__' )[0 ] + "__max_distance" ] = 10000
220
229
elif arg_name == "id" :
221
230
hydrated_references ["id" ] = from_global_id (args .pop ("id" , None ))[1 ]
222
231
args .update (hydrated_references )
@@ -229,6 +238,7 @@ def get_queryset(self, model, info, required_fields=list(), skip=None, limit=Non
229
238
args .update (queryset_or_filters )
230
239
if limit is not None :
231
240
if reversed :
241
+ order_by = ""
232
242
if self .order_by :
233
243
order_by = self .order_by + ",-pk"
234
244
else :
0 commit comments