mirror of
				https://github.com/graphql-python/graphene-django.git
				synced 2025-11-04 09:57:53 +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