Refactor PermissionField

This commit is contained in:
Olivia Rodriguez Valdes 2019-02-28 14:58:20 -05:00
parent 813b31e965
commit ad7497de10

View File

@ -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)