Fix DateTimeField TZ handling

This commit is contained in:
Ryan P Kilby 2017-09-11 04:12:02 -04:00 committed by Carlton Gibson
parent 92eb8c03be
commit 27f312da99

View File

@ -1125,7 +1125,9 @@ class DateTimeField(Field):
""" """
field_timezone = getattr(self, 'timezone', self.default_timezone()) field_timezone = getattr(self, 'timezone', self.default_timezone())
if (field_timezone is not None) and not timezone.is_aware(value): if field_timezone is not None:
if timezone.is_aware(value):
return value.astimezone(field_timezone)
try: try:
return timezone.make_aware(value, field_timezone) return timezone.make_aware(value, field_timezone)
except InvalidTimeError: except InvalidTimeError:
@ -1135,7 +1137,7 @@ class DateTimeField(Field):
return value return value
def default_timezone(self): def default_timezone(self):
return timezone.get_default_timezone() if settings.USE_TZ else None return timezone.get_current_timezone() if settings.USE_TZ else None
def to_internal_value(self, value): def to_internal_value(self, value):
input_formats = getattr(self, 'input_formats', api_settings.DATETIME_INPUT_FORMATS) input_formats = getattr(self, 'input_formats', api_settings.DATETIME_INPUT_FORMATS)
@ -1174,6 +1176,7 @@ class DateTimeField(Field):
return value return value
if output_format.lower() == ISO_8601: if output_format.lower() == ISO_8601:
value = self.enforce_timezone(value)
value = value.isoformat() value = value.isoformat()
if value.endswith('+00:00'): if value.endswith('+00:00'):
value = value[:-6] + 'Z' value = value[:-6] + 'Z'