mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-02-10 00:20:36 +03:00
Added duration field and improved UUID conversion
This commit is contained in:
parent
459270cc09
commit
8136223bb1
|
@ -5,9 +5,11 @@ class MissingType(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
DurationField = models.DurationField
|
||||||
UUIDField = models.UUIDField
|
UUIDField = models.UUIDField
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# Improved compatibility for Django 1.6
|
# Improved compatibility for Django 1.6
|
||||||
|
DurationField = MissingType
|
||||||
UUIDField = MissingType
|
UUIDField = MissingType
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -10,7 +10,7 @@ from graphene.utils.str_converters import to_const
|
||||||
from graphql import assert_valid_name
|
from graphql import assert_valid_name
|
||||||
|
|
||||||
from .compat import (ArrayField, HStoreField, JSONField, RangeField,
|
from .compat import (ArrayField, HStoreField, JSONField, RangeField,
|
||||||
RelatedObject, UUIDField)
|
RelatedObject, UUIDField, DurationField)
|
||||||
from .fields import get_connection_field, DjangoListField
|
from .fields import get_connection_field, DjangoListField
|
||||||
from .utils import get_related_model, import_single_dispatch
|
from .utils import get_related_model, import_single_dispatch
|
||||||
|
|
||||||
|
@ -71,12 +71,12 @@ def convert_django_field(field, registry=None):
|
||||||
@convert_django_field.register(models.URLField)
|
@convert_django_field.register(models.URLField)
|
||||||
@convert_django_field.register(models.GenericIPAddressField)
|
@convert_django_field.register(models.GenericIPAddressField)
|
||||||
@convert_django_field.register(models.FileField)
|
@convert_django_field.register(models.FileField)
|
||||||
@convert_django_field.register(UUIDField)
|
|
||||||
def convert_field_to_string(field, registry=None):
|
def convert_field_to_string(field, registry=None):
|
||||||
return String(description=field.help_text, required=not field.null)
|
return String(description=field.help_text, required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.AutoField)
|
@convert_django_field.register(models.AutoField)
|
||||||
|
@convert_django_field.register(UUIDField)
|
||||||
def convert_field_to_id(field, registry=None):
|
def convert_field_to_id(field, registry=None):
|
||||||
return ID(description=field.help_text, required=not field.null)
|
return ID(description=field.help_text, required=not field.null)
|
||||||
|
|
||||||
|
@ -102,6 +102,7 @@ def convert_field_to_nullboolean(field, registry=None):
|
||||||
|
|
||||||
@convert_django_field.register(models.DecimalField)
|
@convert_django_field.register(models.DecimalField)
|
||||||
@convert_django_field.register(models.FloatField)
|
@convert_django_field.register(models.FloatField)
|
||||||
|
@convert_django_field.register(DurationField)
|
||||||
def convert_field_to_float(field, registry=None):
|
def convert_field_to_float(field, registry=None):
|
||||||
return Float(description=field.help_text, required=not field.null)
|
return Float(description=field.help_text, required=not field.null)
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ from graphene.types.datetime import DateTime
|
||||||
from graphene.types.json import JSONString
|
from graphene.types.json import JSONString
|
||||||
|
|
||||||
from ..compat import (ArrayField, HStoreField, JSONField, MissingType,
|
from ..compat import (ArrayField, HStoreField, JSONField, MissingType,
|
||||||
RangeField)
|
RangeField, UUIDField, DurationField)
|
||||||
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 ..types import DjangoObjectType
|
from ..types import DjangoObjectType
|
||||||
|
@ -80,6 +80,16 @@ def test_should_auto_convert_id():
|
||||||
assert_conversion(models.AutoField, graphene.ID, primary_key=True)
|
assert_conversion(models.AutoField, graphene.ID, primary_key=True)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(UUIDField == MissingType, reason="requires Django UUIDField")
|
||||||
|
def test_should_auto_convert_id():
|
||||||
|
assert_conversion(UUIDField, graphene.ID)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(DurationField == MissingType, reason="requires Django DurationField")
|
||||||
|
def test_should_auto_convert_duration():
|
||||||
|
assert_conversion(DurationField, graphene.Float)
|
||||||
|
|
||||||
|
|
||||||
def test_should_positive_integer_convert_int():
|
def test_should_positive_integer_convert_int():
|
||||||
assert_conversion(models.PositiveIntegerField, graphene.Int)
|
assert_conversion(models.PositiveIntegerField, graphene.Int)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user