Commit 1fc8f84f authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #8566 -- Allow safe-strings in the "attrs" parameter to form widgets.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8601 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 5f396193
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
from django.utils.html import escape
from django.utils.html import conditional_escape
from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode
from django.utils.safestring import mark_safe

@@ -9,7 +9,7 @@ def flatatt(attrs):
    XML-style pairs.  It is assumed that the keys do not need to be XML-escaped.
    If the passed dictionary is empty, then return an empty string.
    """
    return u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()])
    return u''.join([u' %s="%s"' % (k, conditional_escape(v)) for k, v in attrs.items()])

class ErrorDict(dict, StrAndUnicode):
    """
+1 −0
Original line number Diff line number Diff line
@@ -403,6 +403,7 @@ def get_date_formats():
    date_format = ugettext('DATE_FORMAT')
    datetime_format = ugettext('DATETIME_FORMAT')
    time_format = ugettext('TIME_FORMAT')
    datetime_full_format = ugettext('DATE_WITH_TIME_FULL')
    if date_format == 'DATE_FORMAT':
        date_format = settings.DATE_FORMAT
    if datetime_format == 'DATETIME_FORMAT':
+5 −0
Original line number Diff line number Diff line
@@ -50,6 +50,11 @@ u'<input type="text" class="fun" value="foo@example.com" name="email" />'
>>> w.render('email', '', attrs={'class': 'special'})
u'<input type="text" class="special" name="email" />'

'attrs' can be safe-strings if needed
>>> w = TextInput(attrs={'onBlur': mark_safe("function('foo')")})
>>> print w.render('email', '')
<input onBlur="function('foo')" type="text" name="email" />

# PasswordInput Widget ############################################################

>>> w = PasswordInput()