From ad7497de1030b5a2356d980da11159ce7a2f6064 Mon Sep 17 00:00:00 2001 From: Olivia Rodriguez Valdes Date: Thu, 28 Feb 2019 14:58:20 -0500 Subject: [PATCH 1/4] Refactor PermissionField --- graphene_django/fields.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) 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) From d14af48866e2384d0a9c2db38da5042173db20bd Mon Sep 17 00:00:00 2001 From: Olivia Rodriguez Valdes Date: Thu, 28 Feb 2019 15:05:39 -0500 Subject: [PATCH 2/4] Change naming --- graphene_django/fields.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/graphene_django/fields.py b/graphene_django/fields.py index 0f1733d..1131544 100644 --- a/graphene_django/fields.py +++ b/graphene_django/fields.py @@ -157,13 +157,13 @@ class DjangoConnectionField(ConnectionField): class DjangoField(Field): """Class to manage permission for fields""" - def __init__(self, type, permissions, permission_resolver=auth_resolver, *args, **kwargs): + def __init__(self, type, permissions, permissions_resolver=auth_resolver, *args, **kwargs): """Get permissions to access a field""" super(DjangoField, self).__init__(type, *args, **kwargs) self.permissions = permissions - self.permissions_resolver = permission_resolver + self.permissions_resolver = permissions_resolver def get_resolver(self, parent_resolver): """Intercept resolver to analyse permissions""" - return partial(get_unbound_function(self.permission_resolver), self.resolver or parent_resolver, + return partial(get_unbound_function(self.permissions_resolver), self.resolver or parent_resolver, self.permissions, raise_exception=True) From eca43192b0f070186ed3bad534bb425c26077f1c Mon Sep 17 00:00:00 2001 From: Olivia Rodriguez Valdes Date: Thu, 28 Feb 2019 15:10:22 -0500 Subject: [PATCH 3/4] Change get_unbound_function importation --- graphene_django/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/fields.py b/graphene_django/fields.py index 1131544..ec3438e 100644 --- a/graphene_django/fields.py +++ b/graphene_django/fields.py @@ -1,12 +1,12 @@ from functools import partial from django.db.models.query import QuerySet -from django.utils.six import get_unbound_function from promise import Promise from graphene.types import Field, List from graphene.relay import ConnectionField, PageInfo +from graphene.utils.get_unbound_function import get_unbound_function from graphql_relay.connection.arrayconnection import connection_from_list_slice from .settings import graphene_settings From c518ddbf4bf8a8921fd3e69bee66eb7b8536a347 Mon Sep 17 00:00:00 2001 From: Olivia Rodriguez Valdes Date: Thu, 28 Feb 2019 15:15:46 -0500 Subject: [PATCH 4/4] Set raise_exception as arg --- graphene_django/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/fields.py b/graphene_django/fields.py index ec3438e..1bfd33a 100644 --- a/graphene_django/fields.py +++ b/graphene_django/fields.py @@ -166,4 +166,4 @@ class DjangoField(Field): def get_resolver(self, parent_resolver): """Intercept resolver to analyse permissions""" return partial(get_unbound_function(self.permissions_resolver), self.resolver or parent_resolver, - self.permissions, raise_exception=True) + self.permissions, True)