diff --git a/django/contrib/admin/templatetags/adminmedia.py b/django/contrib/admin/templatetags/adminmedia.py index 2b18252d7d..3a822ed9b0 100644 --- a/django/contrib/admin/templatetags/adminmedia.py +++ b/django/contrib/admin/templatetags/adminmedia.py @@ -1,17 +1,9 @@ -from django.core import template +from django.core.template.decorators import simple_tag -class AdminMediaPrefixNode(template.Node): - def render(self, context): - try: - from django.conf.settings import ADMIN_MEDIA_PREFIX - except ImportError: - return '' - return ADMIN_MEDIA_PREFIX - -def admin_media_prefix(parser, token): - """ - {% admin_media_prefix %} - """ - return AdminMediaPrefixNode() - -template.register_tag('admin_media_prefix', admin_media_prefix) +def admin_media_prefix(): + try: + from django.conf.settings import ADMIN_MEDIA_PREFIX + except ImportError: + return '' + return ADMIN_MEDIA_PREFIX +admin_media_prefix = simple_tag(admin_media_prefix) diff --git a/django/core/formfields.py b/django/core/formfields.py index 0c0cb479a1..0cfe6b2890 100644 --- a/django/core/formfields.py +++ b/django/core/formfields.py @@ -333,7 +333,7 @@ class TextField(FormField): def isValidLength(self, data, form): if data and self.maxlength and len(data.decode(DEFAULT_CHARSET)) > self.maxlength: - raise validators.ValidationError, ngettext("Ensure your text is less than %s character", + raise validators.ValidationError, ngettext("Ensure your text is less than %s character.", "Ensure your text is less than %s characters.", self.maxlength) % self.maxlength def hasNoNewlines(self, data, form): diff --git a/django/core/meta/fields.py b/django/core/meta/fields.py index 7ed08936b8..c45c7b6e02 100644 --- a/django/core/meta/fields.py +++ b/django/core/meta/fields.py @@ -775,7 +775,7 @@ class ManyToManyField(Field): if len(objects) != len(pks): badkeys = [k for k in pks if k not in objects] raise validators.ValidationError, ngettext("Please enter valid %(self)s IDs. The value %(value)r is invalid.", - "Please enter valid %(self)s IDs. The values %(value)r are invalid", len(badkeys)) % { + "Please enter valid %(self)s IDs. The values %(value)r are invalid.", len(badkeys)) % { 'self': self.verbose_name, 'value': len(badkeys) == 1 and badkeys[0] or tuple(badkeys), } diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py index bf752ed598..e6ef3b062e 100644 --- a/django/templatetags/i18n.py +++ b/django/templatetags/i18n.py @@ -1,15 +1,10 @@ -"Default tags used by the template system, available to all templates." - from django.core.template import Node, NodeList, Template, Context, resolve_variable, resolve_variable_with_filters, registered_filters from django.core.template import TemplateSyntaxError, register_tag, TokenParser from django.core.template import TOKEN_BLOCK, TOKEN_TEXT, TOKEN_VAR from django.utils import translation - -import sys -import re +import re, sys class GetAvailableLanguagesNode(Node): - def __init__(self, variable): self.variable = variable @@ -19,7 +14,6 @@ class GetAvailableLanguagesNode(Node): return '' class GetCurrentLanguageNode(Node): - def __init__(self, variable): self.variable = variable @@ -28,7 +22,6 @@ class GetCurrentLanguageNode(Node): return '' class TranslateNode(Node): - def __init__(self, value, noop): self.value = value self.noop = noop @@ -41,7 +34,6 @@ class TranslateNode(Node): return translation.gettext(value) class BlockTranslateNode(Node): - def __init__(self, extra_context, singular, plural=None, countervar=None, counter=None): self.extra_context = extra_context self.singular = singular @@ -78,7 +70,7 @@ def do_get_available_languages(parser, token): This will store a list of available languages in the context. - Usage is as follows:: + Usage:: {% get_available_languages as languages %} {% for language in languages %} @@ -89,7 +81,6 @@ def do_get_available_languages(parser, token): your setting file (or the default settings) and put it into the named variable. """ - args = token.contents.split() if len(args) != 3 or args[1] != 'as': raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args @@ -97,10 +88,9 @@ def do_get_available_languages(parser, token): def do_get_current_language(parser, token): """ - This will store the current language in - the context. + This will store the current language in the context. - Usage is as follows:: + Usage:: {% get_current_language as language %} @@ -108,7 +98,6 @@ def do_get_current_language(parser, token): put it's value into the ``language`` context variable. """ - args = token.contents.split() if len(args) != 3 or args[1] != 'as': raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args @@ -119,7 +108,7 @@ def do_translate(parser, token): This will mark a string for translation and will translate the string for the current language. - Usage is like this:: + Usage:: {% trans "this is a test" %} @@ -144,9 +133,7 @@ def do_translate(parser, token): the variable ``variable``. Make sure that the string in there is something that is in the .po file. """ - class TranslateParser(TokenParser): - def top(self): value = self.value() if self.more(): @@ -157,7 +144,6 @@ def do_translate(parser, token): else: noop = False return (value, noop) - (value, noop) = TranslateParser(token.contents).top() return TranslateNode(value, noop) @@ -165,13 +151,13 @@ def do_block_translate(parser, token): """ This will translate a block of text with parameters. - Format is like this:: + Usage:: {% blocktrans with foo|filter as bar and baz|filter as boo %} This is {{ bar }} and {{ boo }}. {% endblocktrans %} - Additionally this supports pluralization:: + Additionally, this supports pluralization:: {% blocktrans count var|length as count %} There is {{ count }} object. @@ -231,4 +217,3 @@ register_tag('get_available_languages', do_get_available_languages) register_tag('get_current_language', do_get_current_language) register_tag('trans', do_translate) register_tag('blocktrans', do_block_translate) - diff --git a/django/views/registration/passwords.py b/django/views/registration/passwords.py index 0dde5f7b6d..65bacafd98 100644 --- a/django/views/registration/passwords.py +++ b/django/views/registration/passwords.py @@ -1,6 +1,6 @@ from django.core import formfields, validators from django.core.extensions import DjangoContext, render_to_response -from django.core.template import loader +from django.core.template import Context, loader from django.models.auth import users from django.views.decorators.auth import login_required from django.utils.httpwrappers import HttpResponseRedirect