|
26 | 26 | from graphene.types.json import JSONString
|
27 | 27 | from graphene.types.scalars import BigInt
|
28 | 28 | from graphene.utils.str_converters import to_camel_case
|
29 |
| -from graphql import GraphQLError, assert_valid_name |
| 29 | +from graphql import GraphQLError |
| 30 | + |
| 31 | +try: |
| 32 | + from graphql import assert_name |
| 33 | +except ImportError: |
| 34 | + # Support for older versions of graphql |
| 35 | + from graphql import assert_valid_name as assert_name |
30 | 36 | from graphql.pyutils import register_description
|
31 | 37 |
|
32 | 38 | from .compat import ArrayField, HStoreField, JSONField, PGJSONField, RangeField
|
@@ -56,7 +62,7 @@ def wrapped_resolver(*args, **kwargs):
|
56 | 62 | def convert_choice_name(name):
|
57 | 63 | name = to_const(force_str(name))
|
58 | 64 | try:
|
59 |
| - assert_valid_name(name) |
| 65 | + assert_name(name) |
60 | 66 | except GraphQLError:
|
61 | 67 | name = "A_%s" % name
|
62 | 68 | return name
|
@@ -311,17 +317,19 @@ def dynamic_type():
|
311 | 317 | class CustomField(Field):
|
312 | 318 | def wrap_resolve(self, parent_resolver):
|
313 | 319 | """
|
314 |
| - Implements a custom resolver which go through the `get_node` method to insure that |
| 320 | + Implements a custom resolver which go through the `get_node` method to ensure that |
315 | 321 | it goes through the `get_queryset` method of the DjangoObjectType.
|
316 | 322 | """
|
317 | 323 | resolver = super().wrap_resolve(parent_resolver)
|
318 | 324 |
|
319 | 325 | def custom_resolver(root, info, **args):
|
320 | 326 | fk_obj = resolver(root, info, **args)
|
321 |
| - if fk_obj is None: |
322 |
| - return None |
323 |
| - else: |
324 |
| - return _type.get_node(info, fk_obj.pk) |
| 327 | + if not isinstance(fk_obj, model): |
| 328 | + # In case the resolver is a custom one that overwrites |
| 329 | + # the default Django resolver |
| 330 | + # This happens, for example, when using custom awaitable resolvers. |
| 331 | + return fk_obj |
| 332 | + return _type.get_node(info, fk_obj.pk) |
325 | 333 |
|
326 | 334 | return custom_resolver
|
327 | 335 |
|
|
0 commit comments