mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-07-14 02:02:20 +03:00
cleanup get_queryset API to match proposal as close as possible
This commit is contained in:
parent
857b20a2f2
commit
2c6faa63c2
|
@ -68,18 +68,8 @@ class DjangoConnectionField(ConnectionField):
|
||||||
return self.model._default_manager
|
return self.model._default_manager
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def resolve_queryset(cls, connection, queryset, info):
|
def resolve_queryset(cls, connection, queryset, info, args):
|
||||||
default_queryset = maybe_queryset(connection._meta.node.get_queryset(info))
|
return connection._meta.node.get_queryset(queryset, info)
|
||||||
if queryset:
|
|
||||||
return cls.merge_querysets(default_queryset, queryset)
|
|
||||||
return default_queryset
|
|
||||||
|
|
||||||
def get_queryset_resolver(self):
|
|
||||||
return partial(
|
|
||||||
self.resolve_queryset,
|
|
||||||
self.type,
|
|
||||||
maybe_queryset(getattr(self.model, self.on)) if self.on else None,
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def merge_querysets(cls, default_queryset, queryset):
|
def merge_querysets(cls, default_queryset, queryset):
|
||||||
|
@ -120,7 +110,7 @@ class DjangoConnectionField(ConnectionField):
|
||||||
cls,
|
cls,
|
||||||
resolver,
|
resolver,
|
||||||
connection,
|
connection,
|
||||||
queryset_resolver,
|
default_manager,
|
||||||
max_limit,
|
max_limit,
|
||||||
enforce_first_or_last,
|
enforce_first_or_last,
|
||||||
root,
|
root,
|
||||||
|
@ -149,13 +139,7 @@ class DjangoConnectionField(ConnectionField):
|
||||||
args["last"] = min(last, max_limit)
|
args["last"] = min(last, max_limit)
|
||||||
|
|
||||||
iterable = resolver(root, info, **args)
|
iterable = resolver(root, info, **args)
|
||||||
if callable(queryset_resolver):
|
queryset = cls.resolve_queryset(connection, default_manager, info, args)
|
||||||
queryset = queryset_resolver(info)
|
|
||||||
else:
|
|
||||||
assert isinstance(queryset_resolver, QuerySet), "The type {} is not a QuerySet".format(
|
|
||||||
type(queryset_resolver)
|
|
||||||
)
|
|
||||||
queryset = queryset_resolver
|
|
||||||
on_resolve = partial(cls.resolve_connection, connection, queryset, args)
|
on_resolve = partial(cls.resolve_connection, connection, queryset, args)
|
||||||
|
|
||||||
if Promise.is_thenable(iterable):
|
if Promise.is_thenable(iterable):
|
||||||
|
@ -168,7 +152,7 @@ class DjangoConnectionField(ConnectionField):
|
||||||
self.connection_resolver,
|
self.connection_resolver,
|
||||||
parent_resolver,
|
parent_resolver,
|
||||||
self.type,
|
self.type,
|
||||||
self.get_queryset_resolver(),
|
self.get_manager(),
|
||||||
self.max_limit,
|
self.max_limit,
|
||||||
self.enforce_first_or_last,
|
self.enforce_first_or_last,
|
||||||
)
|
)
|
||||||
|
|
|
@ -128,12 +128,13 @@ class DjangoObjectType(ObjectType):
|
||||||
return model == cls._meta.model
|
return model == cls._meta.model
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_queryset(cls, info):
|
def get_queryset(cls, queryset, info):
|
||||||
return cls._meta.model.objects
|
return queryset
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node(cls, info, id):
|
def get_node(cls, info, id):
|
||||||
|
queryset = cls.get_queryset(cls._meta.model.objects, info)
|
||||||
try:
|
try:
|
||||||
return cls.get_queryset(info).get(pk=id)
|
return queryset.get(pk=id)
|
||||||
except cls._meta.model.DoesNotExist:
|
except cls._meta.model.DoesNotExist:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue
Block a user