Tools for use [`graphene-django`](https://github.com/graphql-python/graphene-django)
Project description
Graphene django tools
Tools for use graphene-django
Install
pip install graphene-django-tools
Features
Resolver
Using mongoose-like schema to write apollo-like resolver.
simple example:
import graphene
import graphene_django_tools as gdtools
class Foo(gdtools.Resolver):
schema = {
"args": {
"key": 'String!',
"value": 'String!',
},
"type": 'String!',
}
def resolve(self, **kwargs):
self.parent # parent field
self.info # resolve info
self.context # django request object
return kwargs['value']
class Query(graphene.ObjectType):
foo = Foo.as_field()
{
foo(key: "k", value: "v")
}
{ "foo": "v" }
relay node:
class Pet(gdtools.Resolver):
schema = {
'type': {
'name': models.Pet._meta.get_field('name'),
'age': models.Pet._meta.get_field('age'),
},
'interfaces': (graphene.Node,)
}
def get_node(self, id_):
return models.Pet.objects.get(pk=id_)
def validate(self, value):
return isinstance(value, models.Pet)
class Query(graphene.ObjectType):
node = graphene.Node.Field()
schema = graphene.Schema(query=Query, types=[Pet.as_type()])
{
node(id: "UGV0OjE=") {
id
__typename
... on Pet {
name
age
}
}
}
{ "node": { "id": "UGV0OjE=", "__typename": "Pet", "name": "pet1", "age": 1 } }
relay connection:
class Item(gdtools.Resolver):
schema = {'name': 'String!'}
class Items(gdtools.Resolver):
schema = gdtools.get_connection(Item)
def resolve(self, **kwargs):
return gdtools.resolve_connection([{'name': 'a'}, {'name': 'b'}], **kwargs)
{
items {
edges {
node {
name
}
cursor
}
pageInfo {
total
hasNextPage
hasPreviousPage
startCursor
endCursor
}
}
}
{
"items": {
"edges": [
{ "node": { "name": "a" }, "cursor": "YXJyYXljb25uZWN0aW9uOjA=" },
{ "node": { "name": "b" }, "cursor": "YXJyYXljb25uZWN0aW9uOjE=" }
],
"pageInfo": {
"total": 2,
"hasNextPage": false,
"hasPreviousPage": false,
"startCursor": "YXJyYXljb25uZWN0aW9uOjA=",
"endCursor": "YXJyYXljb25uZWN0aW9uOjE="
}
}
}
complicated example:
class Foo(gdtools.Resolver):
_input_schema = {
"type": {"type": 'String'},
"data": [
{
"type":
{
"key": {
"type": 'String',
"required": True,
"description": "<description>",
},
"value": 'Int',
"extra": {
"type": ['String!'],
"deprecation_reason": "<deprecated>"
},
},
"required": True
},
],
}
schema = {
"args": {
"input": _input_schema
},
"type": _input_schema,
"description": "description",
"deprecation_reason": None
}
def resolve(self, **kwargs):
return kwargs['input']
{
foo(
input: { type: "type", data: [{ key: "key", value: 42, extra: ["extra"] }] }
) {
type
data {
key
value
extra
}
}
}
{
"foo": {
"type": "type",
"data": [{ "key": "key", "value": 42, "extra": ["extra"] }]
}
}
Query
ModelField
ModelConnectionField
ModelFilterConnectionField
Map the user model with filter in 10 lines.
Mutation
ModelMutation
ModelCreateMutation
ModelUpdateMutation
example: graphene_django_tools.auth
module
Map the user model with password validation in 40 lines.
Re-implemented Mutation
class
Supports arguments on interface.
class ClientMutationID(graphene.Interface):
"""Mutation with a client mutation id. """
class Arguments:
client_mutation_id = graphene.String()
client_mutation_id = graphene.String()
Data loader integrate
Enable by add 'graphene_django_tools.dataloader.middleware.DataLoaderMiddleware'
to your django settings GRAPHENE['MIDDLEWARE']
Development
run dev server: make dev
test: make test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for graphene_django_tools-0.19.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d021728d66da892946ddcd612fea2c6133d7b244e9d7715ed9f1730ef7e65705 |
|
MD5 | 7596f48d8a8ad1682c20d8c05a8ec75d |
|
BLAKE2b-256 | 0be1e6719ccea1f924babd59d8f2f11d07ab1e3a5f47727e6bfe0371880c0365 |
Close
Hashes for graphene_django_tools-0.19.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b385604a41a22bc57e28628b2a63c0daa2944b512757243f217a0c3bb8969071 |
|
MD5 | 21543a386127690324ff2625eb080b2c |
|
BLAKE2b-256 | 64490efce146e72e88d60c3042ecde09ec659de3c2d469ea900e37f0d783e94a |