Skip to content

Commit 577b76e

Browse files
committed
Removed plugins. Added middlewares
1 parent 3428725 commit 577b76e

File tree

9 files changed

+56
-82
lines changed

9 files changed

+56
-82
lines changed

graphene/contrib/django/debug/tests/test_query.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from ..middleware import DjangoDebugMiddleware
99
from ..types import DjangoDebug
1010

11+
1112
class context(object):
1213
pass
1314

@@ -56,7 +57,7 @@ def resolve_reporter(self, *args, **kwargs):
5657
}]
5758
}
5859
}
59-
schema = graphene.Schema(query=Query, plugins=[DjangoDebugMiddleware()])
60+
schema = graphene.Schema(query=Query, middlewares=[DjangoDebugMiddleware()])
6061
result = schema.execute(query, context_value=context())
6162
assert not result.errors
6263
assert result.data == expected
@@ -104,7 +105,7 @@ def resolve_all_reporters(self, *args, **kwargs):
104105
}]
105106
}
106107
}
107-
schema = graphene.Schema(query=Query, plugins=[DjangoDebugMiddleware()])
108+
schema = graphene.Schema(query=Query, middlewares=[DjangoDebugMiddleware()])
108109
result = schema.execute(query, context_value=context())
109110
assert not result.errors
110111
assert result.data == expected
@@ -153,7 +154,7 @@ def resolve_all_reporters(self, *args, **kwargs):
153154
}]
154155
},
155156
}
156-
schema = graphene.Schema(query=Query, plugins=[DjangoDebugMiddleware()])
157+
schema = graphene.Schema(query=Query, middlewares=[DjangoDebugMiddleware()])
157158
result = schema.execute(query, context_value=context())
158159
assert not result.errors
159160
assert result.data['allReporters'] == expected['allReporters']
@@ -209,7 +210,7 @@ def resolve_all_reporters(self, *args, **kwargs):
209210
}]
210211
},
211212
}
212-
schema = graphene.Schema(query=Query, plugins=[DjangoDebugMiddleware()])
213+
schema = graphene.Schema(query=Query, middlewares=[DjangoDebugMiddleware()])
213214
result = schema.execute(query, context_value=context())
214215
assert not result.errors
215216
assert result.data['allReporters'] == expected['allReporters']

graphene/core/schema.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88
from graphene import signals
99

10-
from ..plugins import CamelCase, PluginManager
11-
from ..utils import promise_middleware
10+
from ..middlewares import MiddlewareManager, CamelCaseArgsMiddleware
1211
from .classtypes.base import ClassType
1312
from .types.base import InstanceType
1413

@@ -24,19 +23,21 @@ class Schema(object):
2423
_executor = None
2524

2625
def __init__(self, query=None, mutation=None, subscription=None,
27-
name='Schema', executor=None, plugins=None, auto_camelcase=True, **options):
26+
name='Schema', executor=None, middlewares=None, auto_camelcase=True, **options):
2827
self._types_names = {}
2928
self._types = {}
3029
self.mutation = mutation
3130
self.query = query
3231
self.subscription = subscription
3332
self.name = name
3433
self.executor = executor
35-
plugins = plugins or []
34+
if 'plugins' in options:
35+
raise Exception('Plugins are deprecated, please use middlewares.')
36+
middlewares = middlewares or []
3637
if auto_camelcase:
37-
plugins.append(CamelCase())
38+
middlewares.append(CamelCaseArgsMiddleware())
3839
self.auto_camelcase = auto_camelcase
39-
self.plugins = PluginManager(self, plugins)
40+
self.middleware_manager = MiddlewareManager(self, middlewares)
4041
self.options = options
4142
signals.init_schema.send(self)
4243

@@ -109,8 +110,7 @@ def get_type(self, type_name):
109110
return self._types_names[type_name]
110111

111112
def resolver_with_middleware(self, resolver):
112-
plugins_resolve = self.plugins.get_plugin_functions('resolve')
113-
return promise_middleware(resolver, plugins_resolve)
113+
return self.middleware_manager.wrap(resolver)
114114

115115
@property
116116
def types(self):

graphene/core/tests/test_schema.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ class MyType(ObjectType):
154154
assert schema.T(t) == schema.T(MyType)
155155

156156

157+
def test_deprecated_plugins_throws_exception():
158+
with raises(Exception) as excinfo:
159+
Schema(plugins=[])
160+
assert 'Plugins are deprecated, please use middlewares' in str(excinfo.value)
161+
162+
157163
def test_schema_str():
158164
expected = """
159165
schema {

graphene/middlewares/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from .base import MiddlewareManager
2+
from .camel_case import CamelCaseArgsMiddleware
3+
4+
__all__ = [
5+
'MiddlewareManager', 'CamelCaseArgsMiddleware'
6+
]

graphene/middlewares/base.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from ..utils import promise_middleware
2+
3+
MIDDLEWARE_RESOLVER_FUNCTION = 'resolve'
4+
5+
6+
class MiddlewareManager(object):
7+
8+
def __init__(self, schema, middlewares=None):
9+
self.schema = schema
10+
self.middlewares = middlewares or []
11+
12+
def add_middleware(self, middleware):
13+
self.middlewares.append(middleware)
14+
15+
def get_middleware_resolvers(self):
16+
for middleware in self.middlewares:
17+
if not hasattr(middleware, MIDDLEWARE_RESOLVER_FUNCTION):
18+
continue
19+
yield getattr(middleware, MIDDLEWARE_RESOLVER_FUNCTION)
20+
21+
def wrap(self, resolver):
22+
middleware_resolvers = self.get_middleware_resolvers()
23+
return promise_middleware(resolver, middleware_resolvers)

graphene/middlewares/camel_case.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from ..utils import ProxySnakeDict
2+
3+
4+
class CamelCaseArgsMiddleware(object):
5+
6+
def resolve(self, next, root, args, context, info):
7+
args = ProxySnakeDict(args)
8+
return next(root, args, context, info)

graphene/plugins/__init__.py

Lines changed: 0 additions & 6 deletions
This file was deleted.

graphene/plugins/base.py

Lines changed: 0 additions & 53 deletions
This file was deleted.

graphene/plugins/camel_case.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)