|
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