Skip to content

Commit f29063d

Browse files
committed
fix[union-type]: union type resolution caused errors when using
fragment spread syntax for GenericReferenceField
1 parent b6b1ad6 commit f29063d

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

graphene_mongo/converter.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -393,10 +393,12 @@ def reference_resolver(root, *args, **kwargs):
393393
for key, values in _type._meta.filter_fields.items():
394394
for each in values:
395395
filter_args.append(key + "__" + each)
396-
querying_types = list(get_query_fields(args[0]).keys())
397-
if _type.__name__ in querying_types:
396+
querying_union_types = get_queried_union_types(
397+
info=args[0], valid_gql_types=registry._registry_string_map.keys()
398+
)
399+
if _type.__name__ in querying_union_types:
398400
queried_fields = list()
399-
for each in get_query_fields(args[0])[_type._meta.name].keys():
401+
for each in querying_union_types[_type._meta.name].keys():
400402
item = to_snake_case(each)
401403
if item in document._fields_ordered + tuple(filter_args):
402404
queried_fields.append(item)
@@ -418,14 +420,16 @@ def lazy_reference_resolver(root, *args, **kwargs):
418420
document_field_type = registry.get_type_for_model(
419421
document.document_type, executor=executor
420422
)
421-
querying_types = list(get_query_fields(args[0]).keys())
423+
querying_union_types = get_queried_union_types(
424+
info=args[0], valid_gql_types=registry._registry_string_map.keys()
425+
)
422426
filter_args = list()
423427
if document_field_type._meta.filter_fields:
424428
for key, values in document_field_type._meta.filter_fields.items():
425429
for each in values:
426430
filter_args.append(key + "__" + each)
427-
if document_field_type._meta.name in querying_types:
428-
for each in get_query_fields(args[0])[document_field_type._meta.name].keys():
431+
if document_field_type._meta.name in querying_union_types:
432+
for each in querying_union_types[document_field_type._meta.name].keys():
429433
item = to_snake_case(each)
430434
if item in document.document_type._fields_ordered + tuple(filter_args):
431435
queried_fields.append(item)
@@ -453,10 +457,12 @@ async def reference_resolver_async(root, *args, **kwargs):
453457
for key, values in _type._meta.filter_fields.items():
454458
for each in values:
455459
filter_args.append(key + "__" + each)
456-
querying_types = list(get_query_fields(args[0]).keys())
457-
if _type.__name__ in querying_types:
460+
querying_union_types = get_queried_union_types(
461+
info=args[0], valid_gql_types=registry._registry_string_map.keys()
462+
)
463+
if _type.__name__ in querying_union_types:
458464
queried_fields = list()
459-
for each in get_query_fields(args[0])[_type._meta.name].keys():
465+
for each in querying_union_types[_type._meta.name].keys():
460466
item = to_snake_case(each)
461467
if item in document._fields_ordered + tuple(filter_args):
462468
queried_fields.append(item)
@@ -478,14 +484,16 @@ async def lazy_reference_resolver_async(root, *args, **kwargs):
478484
document_field_type = registry.get_type_for_model(
479485
document.document_type, executor=executor
480486
)
481-
querying_types = list(get_query_fields(args[0]).keys())
487+
querying_union_types = get_queried_union_types(
488+
info=args[0], valid_gql_types=registry._registry_string_map.keys()
489+
)
482490
filter_args = list()
483491
if document_field_type._meta.filter_fields:
484492
for key, values in document_field_type._meta.filter_fields.items():
485493
for each in values:
486494
filter_args.append(key + "__" + each)
487-
if document_field_type._meta.name in querying_types:
488-
for each in get_query_fields(args[0])[document_field_type._meta.name].keys():
495+
if document_field_type._meta.name in querying_union_types:
496+
for each in querying_union_types[document_field_type._meta.name].keys():
489497
item = to_snake_case(each)
490498
if item in document.document_type._fields_ordered + tuple(filter_args):
491499
queried_fields.append(item)

0 commit comments

Comments
 (0)