Commit 6f66b551 authored by Jannis Leidel's avatar Jannis Leidel
Browse files

Fixed #17255 -- Removed "as" prefix from new timezone template filter names...

Fixed #17255 -- Removed "as" prefix from new timezone template filter names for the sake of clarity. Cheers to Aymeric Augustin for bearing with me.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17107 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 9b1cb755
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -295,7 +295,7 @@ def display_for_field(value, field):
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(field, models.DateTimeField):
        return formats.localize(timezone.aslocaltime(value))
        return formats.localize(timezone.localtime(value))
    elif isinstance(field, models.DateField) or isinstance(field, models.TimeField):
        return formats.localize(value)
    elif isinstance(field, models.DecimalField):
+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 aslocaltime
from django.utils.timezone import localtime


TOKEN_TEXT = 0
@@ -595,7 +595,7 @@ class FilterExpression(object):
                else:
                    arg_vals.append(arg.resolve(context))
            if getattr(func, 'expects_localtime', False):
                obj = aslocaltime(obj, context.use_tz)
                obj = localtime(obj, context.use_tz)
            if getattr(func, 'needs_autoescape', False):
                new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
            else:
@@ -856,7 +856,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 = aslocaltime(value, use_tz=context.use_tz)
    value = 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 aslocaltime
from django.utils.timezone import localtime


class DebugLexer(Lexer):
@@ -82,7 +82,7 @@ class DebugVariableNode(VariableNode):
    def render(self, context):
        try:
            output = self.filter_expression.resolve(context)
            output = aslocaltime(output, use_tz=context.use_tz)
            output = localtime(output, use_tz=context.use_tz)
            output = localize(output, use_l10n=context.use_l10n)
            output = force_unicode(output)
        except UnicodeDecodeError:
+20 −9
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ from django.utils import timezone

register = Library()


# HACK: datetime is an old-style class, create a new-style equivalent
# so we can define additional attributes.
class datetimeobject(datetime, object):
@@ -22,23 +23,25 @@ class datetimeobject(datetime, object):
# Template filters

@register.filter
def aslocaltime(value):
def localtime(value):
    """
    Converts a datetime to local time in the active time zone.

    This only makes sense within a {% localtime off %} block.
    """
    return astimezone(value, timezone.get_current_timezone())
    return do_timezone(value, timezone.get_current_timezone())


@register.filter
def asutc(value):
def utc(value):
    """
    Converts a datetime to UTC.
    """
    return astimezone(value, timezone.utc)
    return do_timezone(value, timezone.utc)

@register.filter
def astimezone(value, arg):

@register.filter('timezone')
def do_timezone(value, arg):
    """
    Converts a datetime to local time in a given time zone.

@@ -103,6 +106,7 @@ class LocalTimeNode(Node):
        context.use_tz = old_setting
        return output


class TimezoneNode(Node):
    """
    Template node class used by ``timezone_tag``.
@@ -116,6 +120,7 @@ class TimezoneNode(Node):
            output = self.nodelist.render(context)
        return output


class GetCurrentTimezoneNode(Node):
    """
    Template node class used by ``get_current_timezone_tag``.
@@ -127,6 +132,7 @@ class GetCurrentTimezoneNode(Node):
        context[self.variable] = timezone.get_current_timezone_name()
        return ''


@register.tag('localtime')
def localtime_tag(parser, token):
    """
@@ -142,13 +148,15 @@ def localtime_tag(parser, token):
    if len(bits) == 1:
        use_tz = True
    elif len(bits) > 2 or bits[1] not in ('on', 'off'):
        raise TemplateSyntaxError("%r argument should be 'on' or 'off'" % bits[0])
        raise TemplateSyntaxError("%r argument should be 'on' or 'off'" %
                                  bits[0])
    else:
        use_tz = bits[1] == 'on'
    nodelist = parser.parse(('endlocaltime',))
    parser.delete_first_token()
    return LocalTimeNode(nodelist, use_tz)


@register.tag('timezone')
def timezone_tag(parser, token):
    """
@@ -167,12 +175,14 @@ def timezone_tag(parser, token):
    """
    bits = token.split_contents()
    if len(bits) != 2:
        raise TemplateSyntaxError("'%s' takes one argument (timezone)" % bits[0])
        raise TemplateSyntaxError("'%s' takes one argument (timezone)" %
                                  bits[0])
    tz = parser.compile_filter(bits[1])
    nodelist = parser.parse(('endtimezone',))
    parser.delete_first_token()
    return TimezoneNode(nodelist, tz)


@register.tag("get_current_timezone")
def get_current_timezone_tag(parser, token):
    """
@@ -187,5 +197,6 @@ def get_current_timezone_tag(parser, token):
    """
    args = token.contents.split()
    if len(args) != 3 or args[1] != 'as':
        raise TemplateSyntaxError("'get_current_timezone' requires 'as variable' (got %r)" % args)
        raise TemplateSyntaxError("'get_current_timezone' requires "
                                  "'as variable' (got %r)" % args)
    return GetCurrentTimezoneNode(args[2])
+2 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ from django.conf import settings
__all__ = [
    'utc', 'get_default_timezone', 'get_current_timezone',
    'activate', 'deactivate', 'override',
    'aslocaltime', 'isnaive',
    'localtime', 'isnaive',
]


@@ -198,7 +198,7 @@ class override(object):

# Utilities

def aslocaltime(value, use_tz=None):
def localtime(value, use_tz=None):
    """
    Checks if value is a datetime and converts it to local time if necessary.

Loading