Commit 3e8b40f4 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Fixed #17992 -- Added a public API for localtime.

Thanks Bradley Ayers for the report.
parent 5aa51fa9
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -290,12 +290,8 @@ class DateFieldListFilter(FieldListFilter):
        now = timezone.now()
        # When time zone support is enabled, convert "now" to the user's time
        # zone so Django's definition of "Today" matches what the user expects.
        if now.tzinfo is not None:
            current_tz = timezone.get_current_timezone()
            now = now.astimezone(current_tz)
            if hasattr(current_tz, 'normalize'):
                # available for pytz time zones
                now = current_tz.normalize(now)
        if timezone.is_aware(now):
            now = timezone.localtime(now)

        if isinstance(field, models.DateTimeField):
            today = now.replace(hour=0, minute=0, second=0, microsecond=0)
+2 −2
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ def display_for_field(value, field):
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(field, models.DateTimeField):
        return formats.localize(timezone.localtime(value))
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(field, (models.DateField, models.TimeField)):
        return formats.localize(value)
    elif isinstance(field, models.DecimalField):
@@ -345,7 +345,7 @@ def display_for_value(value, boolean=False):
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.localtime(value))
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, (decimal.Decimal, float, int, long)):
+3 −3
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ from django.utils.safestring import (SafeData, EscapeData, mark_safe,
from django.utils.formats import localize
from django.utils.html import escape
from django.utils.module_loading import module_has_submodule
from django.utils.timezone import localtime
from django.utils.timezone import template_localtime


TOKEN_TEXT = 0
@@ -592,7 +592,7 @@ class FilterExpression(object):
                else:
                    arg_vals.append(arg.resolve(context))
            if getattr(func, 'expects_localtime', False):
                obj = localtime(obj, context.use_tz)
                obj = template_localtime(obj, context.use_tz)
            if getattr(func, 'needs_autoescape', False):
                new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
            else:
@@ -853,7 +853,7 @@ def _render_value_in_context(value, context):
    means escaping, if required, and conversion to a unicode object. If value
    is a string, it is expected to have already been translated.
    """
    value = localtime(value, use_tz=context.use_tz)
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_unicode(value)
    if ((context.autoescape and not isinstance(value, SafeData)) or
+2 −2
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ from django.utils.encoding import force_unicode
from django.utils.html import escape
from django.utils.safestring import SafeData, EscapeData
from django.utils.formats import localize
from django.utils.timezone import localtime
from django.utils.timezone import template_localtime


class DebugLexer(Lexer):
@@ -82,7 +82,7 @@ class DebugVariableNode(VariableNode):
    def render(self, context):
        try:
            output = self.filter_expression.resolve(context)
            output = localtime(output, use_tz=context.use_tz)
            output = template_localtime(output, use_tz=context.use_tz)
            output = localize(output, use_l10n=context.use_l10n)
            output = force_unicode(output)
        except UnicodeDecodeError:
+1 −5
Original line number Diff line number Diff line
@@ -72,11 +72,7 @@ def do_timezone(value, arg):
    else:
        return ''

    # Convert and prevent further conversion
    result = value.astimezone(tz)
    if hasattr(tz, 'normalize'):
        # available for pytz time zones
        result = tz.normalize(result)
    result = timezone.localtime(value, tz)

    # HACK: the convert_to_local_time flag will prevent
    #       automatic conversion of the value to local time.
Loading