diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/utils/timezone.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/django/utils/timezone.py b/django/utils/timezone.py index 8138767fb2..0c44d4fd4d 100644 --- a/django/utils/timezone.py +++ b/django/utils/timezone.py @@ -306,9 +306,11 @@ def localtime(value, timezone=None): """ if timezone is None: timezone = get_current_timezone() + # If `value` is naive, astimezone() will raise a ValueError, + # so we don't need to perform a redundant check. value = value.astimezone(timezone) if hasattr(timezone, 'normalize'): - # available for pytz time zones + # This method is available for pytz time zones. value = timezone.normalize(value) return value @@ -351,13 +353,15 @@ def make_aware(value, timezone): """ Makes a naive datetime.datetime in a given time zone aware. """ - if is_aware(value): - raise ValueError("make_aware expects a naive value, got %s" % value) if hasattr(timezone, 'localize'): - # available for pytz time zones + # This method is available for pytz time zones. return timezone.localize(value, is_dst=None) else: - # may be wrong around DST changes + # Check that we won't overwrite the timezone of an aware datetime. + if is_aware(value): + raise ValueError( + "make_aware expects a naive datetime, got %s" % value) + # This may be wrong around DST changes! return value.replace(tzinfo=timezone) @@ -365,10 +369,10 @@ def make_naive(value, timezone): """ Makes an aware datetime.datetime naive in a given time zone. """ - if is_naive(value): - raise ValueError("make_naive expects an aware value, got %s" % value) + # If `value` is naive, astimezone() will raise a ValueError, + # so we don't need to perform a redundant check. value = value.astimezone(timezone) if hasattr(timezone, 'normalize'): - # available for pytz time zones + # This method is available for pytz time zones. value = timezone.normalize(value) return value.replace(tzinfo=None) |
