Skip to content

Commit b4e27f7

Browse files
Added new date directive: "time ago 2d".
Updated graphene-django requirements. Replaced dateutils dependency with python-dateutil. Fixed minor bug on "time ago" date directive.
1 parent e66e4fe commit b4e27f7

File tree

4 files changed

+26
-28
lines changed

4 files changed

+26
-28
lines changed

graphene_django_extras/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from .paginations import LimitOffsetGraphqlPagination, PageGraphqlPagination, CursorGraphqlPagination
1010
from .types import DjangoObjectType, DjangoInputObjectType, DjangoListObjectType, DjangoSerializerType
1111

12-
VERSION = (0, 3, 8, 'alpha', '8')
12+
VERSION = (0, 3, 8, 'alpha', '10')
1313

1414
__version__ = get_version(VERSION)
1515

graphene_django_extras/directives/date.py

+18-14
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
__all__ = ('DateGraphQLDirective', )
1515

1616

17-
DEFAULT_DATE_FORMAT = '%d %b %Y %H:%M:%S';
17+
DEFAULT_DATE_FORMAT = '%d %b %Y %H:%M:%S'
1818
FORMATS_MAP = {
1919
# Year
2020
'YYYY': '%Y',
@@ -80,22 +80,26 @@ def _combine_date_time(d, t):
8080
return None
8181

8282

83-
def _parse(dt):
83+
def _parse(partial_dt):
8484
"""
85-
parse input to datetime
85+
parse a partial datetime object to a complete datetime object
8686
"""
87+
dt = None
8788
try:
88-
if isinstance(dt, datetime):
89-
return dt
90-
if isinstance(dt, date):
91-
return _combine_date_time(dt, time(0, 0, 0))
92-
if isinstance(dt, time):
93-
return _combine_date_time(date.today(), dt)
94-
if isinstance(dt, (int, float)):
95-
return datetime.fromtimestamp(dt)
96-
if isinstance(dt, (str, bytes)):
97-
return parser.parse(dt, default=datetime.now())
98-
return None
89+
if isinstance(partial_dt, datetime):
90+
dt = partial_dt
91+
if isinstance(partial_dt, date):
92+
dt = _combine_date_time(partial_dt, time(0, 0, 0))
93+
if isinstance(partial_dt, time):
94+
dt = _combine_date_time(date.today(), partial_dt)
95+
if isinstance(partial_dt, (int, float)):
96+
dt = datetime.fromtimestamp(partial_dt)
97+
if isinstance(partial_dt, (str, bytes)):
98+
dt = parser.parse(partial_dt, default=timezone.now())
99+
100+
if dt is not None and timezone.is_naive(dt):
101+
dt = timezone.make_aware(dt)
102+
return dt
99103
except ValueError:
100104
return None
101105

graphene_django_extras/types.py

+5-11
Original file line numberDiff line numberDiff line change
@@ -154,32 +154,26 @@ def __init_subclass_with_meta__(cls, model=None, container=None, registry=None,
154154
if not DJANGO_FILTER_INSTALLED and filter_fields:
155155
raise Exception("Can only set filter_fields if Django-Filter is installed")
156156

157-
django_fields = yank_fields_from_attrs(
158-
construct_fields(model, registry, only_fields, exclude_fields, None, nested_fields),
159-
_as=Field, sort=False
160-
)
161-
162157
django_input_fields = yank_fields_from_attrs(
163158
construct_fields(model, registry, only_fields, exclude_fields, input_for, nested_fields),
164159
_as=InputField, sort=False
165160
)
166161

167-
if container is None:
168-
container = type(cls.__name__, (InputObjectTypeContainer, cls), {})
169-
170162
_meta = DjangoObjectOptions(cls)
171163
_meta.by_polar = True
172164
_meta.model = model
173165
_meta.registry = registry
174166
_meta.filter_fields = filter_fields
175-
# _meta.fields = django_fields
176167
_meta.fields = django_input_fields
177168
_meta.input_fields = django_input_fields
178-
_meta.container = container
179169
_meta.connection = connection
180170
_meta.input_for = input_for
181171

182-
super(DjangoInputObjectType, cls).__init_subclass_with_meta__(_meta=_meta, **options)
172+
super(DjangoInputObjectType, cls).__init_subclass_with_meta__(
173+
container=container,
174+
_meta=_meta,
175+
**options
176+
)
183177

184178
if not skip_registry:
185179
registry.register(cls, for_input=input_for)

setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ def get_packages():
5555
packages=get_packages(),
5656

5757
install_requires=[
58-
'graphene-django>=2.0',
59-
'django-filter<2',
58+
'graphene-django>=2.1.0',
59+
'django-filter==1.1.0',
6060
'djangorestframework>=3.6.0'
6161
],
6262
extras_require={

0 commit comments

Comments
 (0)