Skip to content

Commit 62c0694

Browse files
author
=
committed
models.DateField corresponds to graphene Date Scalar
1 parent 73706fa commit 62c0694

File tree

9 files changed

+40
-13
lines changed

9 files changed

+40
-13
lines changed

graphene_django/converter.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from graphene import (ID, Boolean, Dynamic, Enum, Field, Float, Int, List,
55
NonNull, String, UUID)
6-
from graphene.types.datetime import DateTime, Time
6+
from graphene.types.datetime import DateTime, Date, Time
77
from graphene.types.json import JSONString
88
from graphene.utils.str_converters import to_camel_case, to_const
99
from graphql import assert_valid_name
@@ -121,11 +121,16 @@ def convert_field_to_float(field, registry=None):
121121
return Float(description=field.help_text, required=not field.null)
122122

123123

124-
@convert_django_field.register(models.DateField)
124+
@convert_django_field.register(models.DateTimeField)
125125
def convert_date_to_string(field, registry=None):
126126
return DateTime(description=field.help_text, required=not field.null)
127127

128128

129+
@convert_django_field.register(models.DateField)
130+
def convert_date_to_string(field, registry=None):
131+
return Date(description=field.help_text, required=not field.null)
132+
133+
129134
@convert_django_field.register(models.TimeField)
130135
def convert_time_to_string(field, registry=None):
131136
return Time(description=field.help_text, required=not field.null)

graphene_django/filter/tests/test_fields.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ class Query(ObjectType):
157157

158158
r1 = Reporter.objects.create(first_name='r1', last_name='r1', email='r1@test.com')
159159
r2 = Reporter.objects.create(first_name='r2', last_name='r2', email='r2@test.com')
160-
Article.objects.create(headline='a1', pub_date=datetime.now(), reporter=r1, editor=r1)
161-
Article.objects.create(headline='a2', pub_date=datetime.now(), reporter=r2, editor=r2)
160+
Article.objects.create(headline='a1', pub_date=datetime.now(), pub_date_time=datetime.now(), reporter=r1, editor=r1)
161+
Article.objects.create(headline='a2', pub_date=datetime.now(), pub_date_time=datetime.now(), reporter=r2, editor=r2)
162162

163163
class context(object):
164164
reporter = r2
@@ -245,8 +245,8 @@ class Query(ObjectType):
245245

246246
r1 = Reporter.objects.create(first_name='r1', last_name='r1', email='r1@test.com')
247247
r2 = Reporter.objects.create(first_name='r2', last_name='r2', email='r2@test.com')
248-
Article.objects.create(headline='a1', pub_date=datetime.now(), reporter=r1)
249-
Article.objects.create(headline='a2', pub_date=datetime.now(), reporter=r2)
248+
Article.objects.create(headline='a1', pub_date=datetime.now(), pub_date_time=datetime.now(), reporter=r1)
249+
Article.objects.create(headline='a2', pub_date=datetime.now(), pub_date_time=datetime.now(), reporter=r2)
250250

251251
query = '''
252252
query {
@@ -464,13 +464,15 @@ def resolve_all_reporters(self, info, **args):
464464
Article.objects.create(
465465
headline='Article Node 1',
466466
pub_date=datetime.now(),
467+
pub_date_time=datetime.now(),
467468
reporter=r,
468469
editor=r,
469470
lang='es'
470471
)
471472
Article.objects.create(
472473
headline='Article Node 2',
473474
pub_date=datetime.now(),
475+
pub_date_time=datetime.now(),
474476
reporter=r,
475477
editor=r,
476478
lang='en'

graphene_django/rest_framework/serializer_converter.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,15 @@ def convert_serializer_field_to_float(field):
9292

9393

9494
@get_graphene_type_from_serializer_field.register(serializers.DateTimeField)
95-
@get_graphene_type_from_serializer_field.register(serializers.DateField)
9695
def convert_serializer_field_to_date_time(field):
9796
return graphene.types.datetime.DateTime
9897

9998

99+
@get_graphene_type_from_serializer_field.register(serializers.DateField)
100+
def convert_serializer_field_to_date_time(field):
101+
return graphene.types.datetime.Date
102+
103+
100104
@get_graphene_type_from_serializer_field.register(serializers.TimeField)
101105
def convert_serializer_field_to_time(field):
102106
return graphene.types.datetime.Time

graphene_django/rest_framework/tests/test_field_converter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ def test_should_date_time_convert_datetime():
8787
assert_conversion(serializers.DateTimeField, graphene.types.datetime.DateTime)
8888

8989

90-
def test_should_date_convert_datetime():
91-
assert_conversion(serializers.DateField, graphene.types.datetime.DateTime)
90+
def test_should_date_convert_date():
91+
assert_conversion(serializers.DateField, graphene.types.datetime.Date)
9292

9393

9494
def test_should_time_convert_time():

graphene_django/tests/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def __str__(self): # __unicode__ on Python 2
3737
class Article(models.Model):
3838
headline = models.CharField(max_length=100)
3939
pub_date = models.DateField()
40+
pub_date_time = models.DateTimeField()
4041
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE, related_name='articles')
4142
editor = models.ForeignKey(Reporter, on_delete=models.CASCADE, related_name='edited_articles_+')
4243
lang = models.CharField(max_length=2, help_text='Language', choices=[

graphene_django/tests/test_converter.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import graphene
77
from graphene.relay import ConnectionField, Node
8-
from graphene.types.datetime import DateTime, Time
8+
from graphene.types.datetime import DateTime, Date, Time
99
from graphene.types.json import JSONString
1010

1111
from ..compat import JSONField, ArrayField, HStoreField, RangeField, MissingType
@@ -38,9 +38,12 @@ def test_should_unknown_django_field_raise_exception():
3838
convert_django_field(None)
3939
assert 'Don\'t know how to convert the Django field' in str(excinfo.value)
4040

41+
def test_should_date_time_convert_string():
42+
assert_conversion(models.DateTimeField, DateTime)
43+
4144

4245
def test_should_date_convert_string():
43-
assert_conversion(models.DateField, DateTime)
46+
assert_conversion(models.DateField, Date)
4447

4548

4649
def test_should_time_convert_string():

graphene_django/tests/test_form_converter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def test_should_date_convert_string():
3030
def test_should_time_convert_string():
3131
assert_conversion(forms.TimeField, graphene.String)
3232

33+
def test_should_date_convert_string():
34+
assert_conversion(forms.DateField, graphene.String)
3335

3436
def test_should_date_time_convert_string():
3537
assert_conversion(forms.DateTimeField, graphene.String)

graphene_django/tests/test_query.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,13 +371,15 @@ class Query(graphene.ObjectType):
371371
Article.objects.create(
372372
headline='Article Node 1',
373373
pub_date=datetime.date.today(),
374+
pub_date_time=datetime.datetime.now(),
374375
reporter=r,
375376
editor=r,
376377
lang='es'
377378
)
378379
Article.objects.create(
379380
headline='Article Node 2',
380381
pub_date=datetime.date.today(),
382+
pub_date_time=datetime.datetime.now(),
381383
reporter=r,
382384
editor=r,
383385
lang='en'
@@ -453,20 +455,23 @@ class Query(graphene.ObjectType):
453455
Article.objects.create(
454456
headline='Article Node 1',
455457
pub_date=datetime.date.today(),
458+
pub_date_time=datetime.datetime.now(),
456459
reporter=r,
457460
editor=r,
458461
lang='es'
459462
)
460463
Article.objects.create(
461464
headline='Article Node 2',
462465
pub_date=datetime.date.today(),
466+
pub_date_time=datetime.datetime.now(),
463467
reporter=r,
464468
editor=r,
465469
lang='es'
466470
)
467471
Article.objects.create(
468472
headline='Article Node 3',
469473
pub_date=datetime.date.today(),
474+
pub_date_time=datetime.datetime.now(),
470475
reporter=r,
471476
editor=r,
472477
lang='en'
@@ -692,13 +697,15 @@ class Query(graphene.ObjectType):
692697
Article.objects.create(
693698
headline='Article Node 1',
694699
pub_date=datetime.date.today(),
700+
pub_date_time=datetime.datetime.now(),
695701
reporter=r,
696702
editor=r,
697703
lang='es'
698704
)
699705
Article.objects.create(
700706
headline='Article Node 2',
701707
pub_date=datetime.date.today(),
708+
pub_date_time=datetime.datetime.now(),
702709
reporter=r,
703710
editor=r,
704711
lang='en'

graphene_django/tests/test_types.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def test_django_objecttype_map_correct_fields():
6464

6565
def test_django_objecttype_with_node_have_correct_fields():
6666
fields = Article._meta.fields
67-
assert list(fields.keys()) == ['id', 'headline', 'pub_date', 'reporter', 'editor', 'lang', 'importance']
67+
assert list(fields.keys()) == ['id', 'headline', 'pub_date', 'pub_date_time', 'reporter', 'editor', 'lang', 'importance']
6868

6969

7070
def test_schema_representation():
@@ -76,7 +76,8 @@ def test_schema_representation():
7676
type Article implements Node {
7777
id: ID!
7878
headline: String!
79-
pubDate: DateTime!
79+
pubDate: Date!
80+
pubDateTime: DateTime!
8081
reporter: Reporter!
8182
editor: Reporter!
8283
lang: ArticleLang!
@@ -104,6 +105,8 @@ def test_schema_representation():
104105
EN
105106
}
106107
108+
scalar Date
109+
107110
scalar DateTime
108111
109112
interface Node {

0 commit comments

Comments
 (0)