diff --git a/graphene_django/fields.py b/graphene_django/fields.py index 384a6b6..0f1733d 100644 --- a/graphene_django/fields.py +++ b/graphene_django/fields.py @@ -1,8 +1,7 @@ from functools import partial -from django.core.exceptions import PermissionDenied from django.db.models.query import QuerySet -from graphene.utils.get_unbound_function import get_unbound_function +from django.utils.six import get_unbound_function from promise import Promise @@ -155,16 +154,16 @@ class DjangoConnectionField(ConnectionField): ) -class DjangoPermissionField(Field): +class DjangoField(Field): """Class to manage permission for fields""" - AUTH_RESOLVER = auth_resolver - def __init__(self, type, permissions, *args, **kwargs): + def __init__(self, type, permissions, permission_resolver=auth_resolver, *args, **kwargs): """Get permissions to access a field""" - super(DjangoPermissionField, self).__init__(type, *args, **kwargs) + super(DjangoField, self).__init__(type, *args, **kwargs) self.permissions = permissions + self.permissions_resolver = permission_resolver def get_resolver(self, parent_resolver): """Intercept resolver to analyse permissions""" - return partial(get_unbound_function(self.AUTH_RESOLVER), self.resolver or parent_resolver, self.permissions, - True) + return partial(get_unbound_function(self.permission_resolver), self.resolver or parent_resolver, + self.permissions, raise_exception=True)