Skip to content

Commit 8136223

Browse files
committed
Added duration field and improved UUID conversion
1 parent 459270c commit 8136223

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

graphene_django/compat.py

+2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ class MissingType(object):
55
pass
66

77
try:
8+
DurationField = models.DurationField
89
UUIDField = models.UUIDField
910
except AttributeError:
1011
# Improved compatibility for Django 1.6
12+
DurationField = MissingType
1113
UUIDField = MissingType
1214

1315
try:

graphene_django/converter.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from graphql import assert_valid_name
1111

1212
from .compat import (ArrayField, HStoreField, JSONField, RangeField,
13-
RelatedObject, UUIDField)
13+
RelatedObject, UUIDField, DurationField)
1414
from .fields import get_connection_field, DjangoListField
1515
from .utils import get_related_model, import_single_dispatch
1616

@@ -71,12 +71,12 @@ def convert_django_field(field, registry=None):
7171
@convert_django_field.register(models.URLField)
7272
@convert_django_field.register(models.GenericIPAddressField)
7373
@convert_django_field.register(models.FileField)
74-
@convert_django_field.register(UUIDField)
7574
def convert_field_to_string(field, registry=None):
7675
return String(description=field.help_text, required=not field.null)
7776

7877

7978
@convert_django_field.register(models.AutoField)
79+
@convert_django_field.register(UUIDField)
8080
def convert_field_to_id(field, registry=None):
8181
return ID(description=field.help_text, required=not field.null)
8282

@@ -102,6 +102,7 @@ def convert_field_to_nullboolean(field, registry=None):
102102

103103
@convert_django_field.register(models.DecimalField)
104104
@convert_django_field.register(models.FloatField)
105+
@convert_django_field.register(DurationField)
105106
def convert_field_to_float(field, registry=None):
106107
return Float(description=field.help_text, required=not field.null)
107108

graphene_django/tests/test_converter.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from graphene.types.json import JSONString
1010

1111
from ..compat import (ArrayField, HStoreField, JSONField, MissingType,
12-
RangeField)
12+
RangeField, UUIDField, DurationField)
1313
from ..converter import convert_django_field, convert_django_field_with_choices
1414
from ..registry import Registry
1515
from ..types import DjangoObjectType
@@ -80,6 +80,16 @@ def test_should_auto_convert_id():
8080
assert_conversion(models.AutoField, graphene.ID, primary_key=True)
8181

8282

83+
@pytest.mark.skipif(UUIDField == MissingType, reason="requires Django UUIDField")
84+
def test_should_auto_convert_id():
85+
assert_conversion(UUIDField, graphene.ID)
86+
87+
88+
@pytest.mark.skipif(DurationField == MissingType, reason="requires Django DurationField")
89+
def test_should_auto_convert_duration():
90+
assert_conversion(DurationField, graphene.Float)
91+
92+
8393
def test_should_positive_integer_convert_int():
8494
assert_conversion(models.PositiveIntegerField, graphene.Int)
8595

0 commit comments

Comments
 (0)