mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-08 23:50:38 +03:00
Deprecated DjangoNode in favor of relay.Node
This commit is contained in:
parent
e5a8eff4ac
commit
b75da9fb8a
|
@ -1,6 +1,6 @@
|
||||||
import graphene
|
import graphene
|
||||||
from graphene import relay, resolve_only_args, Schema
|
from graphene import relay, resolve_only_args, Schema
|
||||||
from graphene_django import DjangoNode, DjangoObjectType
|
from graphene_django import DjangoObjectType
|
||||||
|
|
||||||
from .data import (create_ship, get_empire, get_faction, get_rebels, get_ship,
|
from .data import (create_ship, get_empire, get_faction, get_rebels, get_ship,
|
||||||
get_ships)
|
get_ships)
|
||||||
|
@ -15,7 +15,7 @@ class Ship(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ShipModel
|
model = ShipModel
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (relay.Node, )
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node(cls, id, context, info):
|
def get_node(cls, id, context, info):
|
||||||
|
@ -34,7 +34,7 @@ class Faction(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FactionModel
|
model = FactionModel
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (relay.Node, )
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node(cls, id, context, info):
|
def get_node(cls, id, context, info):
|
||||||
|
@ -62,7 +62,7 @@ class IntroduceShip(relay.ClientIDMutation):
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
rebels = graphene.Field(Faction)
|
rebels = graphene.Field(Faction)
|
||||||
empire = graphene.Field(Faction)
|
empire = graphene.Field(Faction)
|
||||||
node = DjangoNode.Field()
|
node = relay.Node.Field()
|
||||||
ships = relay.ConnectionField(Ship, description='All the ships.')
|
ships = relay.ConnectionField(Ship, description='All the ships.')
|
||||||
|
|
||||||
@resolve_only_args
|
@resolve_only_args
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
from .types import (
|
from .types import (
|
||||||
DjangoObjectType,
|
DjangoObjectType,
|
||||||
DjangoNode
|
|
||||||
)
|
)
|
||||||
from .fields import (
|
from .fields import (
|
||||||
DjangoConnectionField,
|
DjangoConnectionField,
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = ['DjangoObjectType', 'DjangoNode',
|
__all__ = ['DjangoObjectType',
|
||||||
'DjangoConnectionField']
|
'DjangoConnectionField']
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import graphene
|
import graphene
|
||||||
from graphene_django import DjangoConnectionField, DjangoNode, DjangoObjectType
|
from graphene.relay import Node
|
||||||
|
from graphene_django import DjangoConnectionField, DjangoObjectType
|
||||||
from graphene_django.utils import DJANGO_FILTER_INSTALLED
|
from graphene_django.utils import DJANGO_FILTER_INSTALLED
|
||||||
|
|
||||||
from ...tests.models import Reporter
|
from ...tests.models import Reporter
|
||||||
|
@ -27,7 +28,7 @@ def test_should_query_field():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
reporter = graphene.Field(ReporterType)
|
reporter = graphene.Field(ReporterType)
|
||||||
|
@ -74,7 +75,7 @@ def test_should_query_list():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
all_reporters = graphene.List(ReporterType)
|
all_reporters = graphene.List(ReporterType)
|
||||||
|
@ -123,7 +124,7 @@ def test_should_query_connection():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
all_reporters = DjangoConnectionField(ReporterType)
|
all_reporters = DjangoConnectionField(ReporterType)
|
||||||
|
@ -180,7 +181,7 @@ def test_should_query_connectionfilter():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
all_reporters = DjangoFilterConnectionField(ReporterType)
|
all_reporters = DjangoFilterConnectionField(ReporterType)
|
||||||
|
|
|
@ -3,7 +3,8 @@ from datetime import datetime
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from graphene import ObjectType, Schema, Field
|
from graphene import ObjectType, Schema, Field
|
||||||
from graphene_django import DjangoNode, DjangoObjectType
|
from graphene.relay import Node
|
||||||
|
from graphene_django import DjangoObjectType
|
||||||
from graphene_django.forms import (GlobalIDFormField,
|
from graphene_django.forms import (GlobalIDFormField,
|
||||||
GlobalIDMultipleChoiceField)
|
GlobalIDMultipleChoiceField)
|
||||||
from graphene_django.tests.models import Article, Pet, Reporter
|
from graphene_django.tests.models import Article, Pet, Reporter
|
||||||
|
@ -25,21 +26,21 @@ class ArticleNode(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Article
|
model = Article
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
|
|
||||||
class ReporterNode(DjangoObjectType):
|
class ReporterNode(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
|
|
||||||
class PetNode(DjangoObjectType):
|
class PetNode(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Pet
|
model = Pet
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
# schema = Schema()
|
# schema = Schema()
|
||||||
|
|
||||||
|
@ -138,7 +139,7 @@ def test_filter_filterset_information_on_meta():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
filter_fields = ['first_name', 'articles']
|
filter_fields = ['first_name', 'articles']
|
||||||
filter_order_by = True
|
filter_order_by = True
|
||||||
|
|
||||||
|
@ -152,7 +153,7 @@ def test_filter_filterset_information_on_meta_related():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
filter_fields = ['first_name', 'articles']
|
filter_fields = ['first_name', 'articles']
|
||||||
filter_order_by = True
|
filter_order_by = True
|
||||||
|
|
||||||
|
@ -160,7 +161,7 @@ def test_filter_filterset_information_on_meta_related():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Article
|
model = Article
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
filter_fields = ['headline', 'reporter']
|
filter_fields = ['headline', 'reporter']
|
||||||
filter_order_by = True
|
filter_order_by = True
|
||||||
|
|
||||||
|
@ -181,14 +182,14 @@ def test_filter_filterset_related_results():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
filter_fields = ['first_name', 'articles']
|
filter_fields = ['first_name', 'articles']
|
||||||
filter_order_by = True
|
filter_order_by = True
|
||||||
|
|
||||||
class ArticleFilterNode(DjangoObjectType):
|
class ArticleFilterNode(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
model = Article
|
model = Article
|
||||||
filter_fields = ['headline', 'reporter']
|
filter_fields = ['headline', 'reporter']
|
||||||
filter_order_by = True
|
filter_order_by = True
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import graphene
|
import graphene
|
||||||
from graphene import Schema
|
from graphene import Schema, relay
|
||||||
from ..types import DjangoNode, DjangoObjectType
|
from ..types import DjangoObjectType
|
||||||
|
|
||||||
from .models import Article, Reporter
|
from .models import Article, Reporter
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ class Character(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (relay.Node, )
|
||||||
|
|
||||||
def get_node(self, id, context, info):
|
def get_node(self, id, context, info):
|
||||||
pass
|
pass
|
||||||
|
@ -20,7 +20,7 @@ class Human(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Article
|
model = Article
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (relay.Node, )
|
||||||
|
|
||||||
def resolve_raises(self, *args):
|
def resolve_raises(self, *args):
|
||||||
raise Exception("This field should raise exception")
|
raise Exception("This field should raise exception")
|
||||||
|
|
|
@ -14,7 +14,7 @@ from ..compat import (ArrayField, HStoreField, JSONField, MissingType,
|
||||||
from ..converter import convert_django_field, convert_django_field_with_choices
|
from ..converter import convert_django_field, convert_django_field_with_choices
|
||||||
from ..registry import Registry
|
from ..registry import Registry
|
||||||
from .models import Article, Reporter, Film, FilmDetails, Pet
|
from .models import Article, Reporter, Film, FilmDetails, Pet
|
||||||
from ..types import DjangoObjectType, DjangoNode
|
from ..types import DjangoObjectType
|
||||||
|
|
||||||
|
|
||||||
def assert_conversion(django_field, graphene_field, *args, **kwargs):
|
def assert_conversion(django_field, graphene_field, *args, **kwargs):
|
||||||
|
@ -179,7 +179,7 @@ def test_should_manytomany_convert_connectionorlist_connection():
|
||||||
class A(DjangoObjectType):
|
class A(DjangoObjectType):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
graphene_field = convert_django_field(Reporter._meta.local_many_to_many[0], A._meta.registry)
|
graphene_field = convert_django_field(Reporter._meta.local_many_to_many[0], A._meta.registry)
|
||||||
assert isinstance(graphene_field, graphene.Dynamic)
|
assert isinstance(graphene_field, graphene.Dynamic)
|
||||||
|
|
|
@ -5,9 +5,10 @@ from django.db import models
|
||||||
from py.test import raises
|
from py.test import raises
|
||||||
|
|
||||||
import graphene
|
import graphene
|
||||||
|
from graphene.relay import Node
|
||||||
|
|
||||||
from ..compat import MissingType, RangeField
|
from ..compat import MissingType, RangeField
|
||||||
from ..types import DjangoNode, DjangoObjectType
|
from ..types import DjangoObjectType
|
||||||
from ..registry import reset_global_registry, get_global_registry
|
from ..registry import reset_global_registry, get_global_registry
|
||||||
from .models import Article, Reporter
|
from .models import Article, Reporter
|
||||||
|
|
||||||
|
@ -119,13 +120,13 @@ def test_should_query_postgres_fields():
|
||||||
|
|
||||||
def test_should_node():
|
def test_should_node():
|
||||||
# reset_global_registry()
|
# reset_global_registry()
|
||||||
# DjangoNode._meta.registry = get_global_registry()
|
# Node._meta.registry = get_global_registry()
|
||||||
|
|
||||||
class ReporterNode(DjangoObjectType):
|
class ReporterNode(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Reporter
|
model = Reporter
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node(cls, id, context, info):
|
def get_node(cls, id, context, info):
|
||||||
|
@ -138,14 +139,14 @@ def test_should_node():
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Article
|
model = Article
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node(cls, id, context, info):
|
def get_node(cls, id, context, info):
|
||||||
return Article(id=1, headline='Article node', pub_date=datetime.date(2002, 3, 11))
|
return Article(id=1, headline='Article node', pub_date=datetime.date(2002, 3, 11))
|
||||||
|
|
||||||
class Query(graphene.ObjectType):
|
class Query(graphene.ObjectType):
|
||||||
node = DjangoNode.Field()
|
node = Node.Field()
|
||||||
reporter = graphene.Field(ReporterNode)
|
reporter = graphene.Field(ReporterNode)
|
||||||
article = graphene.Field(ArticleNode)
|
article = graphene.Field(ArticleNode)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ from mock import patch
|
||||||
|
|
||||||
from graphene import ObjectType, Field, Int, ID, Schema, Interface
|
from graphene import ObjectType, Field, Int, ID, Schema, Interface
|
||||||
from graphene.relay import Node, ConnectionField
|
from graphene.relay import Node, ConnectionField
|
||||||
from ..types import DjangoNode, DjangoObjectType
|
from ..types import DjangoObjectType
|
||||||
|
|
||||||
from .models import Article as ArticleModel, Reporter as ReporterModel
|
from .models import Article as ArticleModel, Reporter as ReporterModel
|
||||||
from ..registry import reset_global_registry, Registry
|
from ..registry import reset_global_registry, Registry
|
||||||
|
@ -21,19 +21,19 @@ class Article(DjangoObjectType):
|
||||||
'''Article description'''
|
'''Article description'''
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ArticleModel
|
model = ArticleModel
|
||||||
interfaces = (DjangoNode, )
|
interfaces = (Node, )
|
||||||
|
|
||||||
|
|
||||||
class RootQuery(ObjectType):
|
class RootQuery(ObjectType):
|
||||||
node = DjangoNode.Field()
|
node = Node.Field()
|
||||||
|
|
||||||
|
|
||||||
schema = Schema(query=RootQuery, types=[Article, Reporter])
|
schema = Schema(query=RootQuery, types=[Article, Reporter])
|
||||||
|
|
||||||
|
|
||||||
def test_django_interface():
|
def test_django_interface():
|
||||||
assert issubclass(DjangoNode, Interface)
|
assert issubclass(Node, Interface)
|
||||||
assert issubclass(DjangoNode, Node)
|
assert issubclass(Node, Node)
|
||||||
|
|
||||||
|
|
||||||
@patch('graphene_django.tests.models.Article.objects.get', return_value=Article(id=1))
|
@patch('graphene_django.tests.models.Article.objects.get', return_value=Article(id=1))
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from functools import partial
|
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from graphene import Field, Interface, ObjectType
|
from graphene import ObjectType
|
||||||
from graphene.types.objecttype import ObjectTypeMeta
|
from graphene.types.objecttype import ObjectTypeMeta
|
||||||
from graphene.relay import Node
|
|
||||||
from graphene.relay.node import NodeMeta
|
|
||||||
from .converter import convert_django_field_with_choices
|
from .converter import convert_django_field_with_choices
|
||||||
from graphene.types.options import Options
|
from graphene.types.options import Options
|
||||||
from .utils import get_model_fields, is_valid_django_model, DJANGO_FILTER_INSTALLED
|
from .utils import get_model_fields, is_valid_django_model, DJANGO_FILTER_INSTALLED
|
||||||
|
@ -74,9 +71,6 @@ class DjangoObjectTypeMeta(ObjectTypeMeta):
|
||||||
'You need to pass a valid Django Model in {}.Meta, received "{}".'
|
'You need to pass a valid Django Model in {}.Meta, received "{}".'
|
||||||
).format(name, options.model)
|
).format(name, options.model)
|
||||||
|
|
||||||
# interfaces = tuple(options.interfaces)
|
|
||||||
# fields = get_fields(ObjectType, attrs, bases, interfaces)
|
|
||||||
# attrs = attrs_without_fields(attrs, fields)
|
|
||||||
cls = ObjectTypeMeta.__new__(cls, name, bases, dict(attrs, _meta=options))
|
cls = ObjectTypeMeta.__new__(cls, name, bases, dict(attrs, _meta=options))
|
||||||
|
|
||||||
options.registry.register(cls)
|
options.registry.register(cls)
|
||||||
|
@ -106,24 +100,3 @@ class DjangoObjectType(six.with_metaclass(DjangoObjectTypeMeta, ObjectType)):
|
||||||
return cls._meta.model.objects.get(id=id)
|
return cls._meta.model.objects.get(id=id)
|
||||||
except cls._meta.model.DoesNotExist:
|
except cls._meta.model.DoesNotExist:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
DjangoNode = Node
|
|
||||||
|
|
||||||
# class DjangoNodeMeta(DjangoObjectTypeMeta, NodeMeta):
|
|
||||||
# pass
|
|
||||||
|
|
||||||
|
|
||||||
# class DjangoNode(six.with_metaclass(DjangoNodeMeta, Node)):
|
|
||||||
# @classmethod
|
|
||||||
# def get_node(cls, id, context, info):
|
|
||||||
# try:
|
|
||||||
# return cls._meta.model.objects.get(id=id)
|
|
||||||
# except cls._meta.model.DoesNotExist:
|
|
||||||
# return None
|
|
||||||
|
|
||||||
# @classmethod
|
|
||||||
# def resolve_type(cls, type, context, info):
|
|
||||||
# # We get the model from the _meta in the Django class/instance
|
|
||||||
# model = type._meta.model
|
|
||||||
# graphene_type = cls._meta.registry.get_type_for_model(model)
|
|
||||||
# return graphene_type
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user