diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2007-02-15 05:05:43 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2007-02-15 05:05:43 +0000 |
| commit | b93614ada658087cbc90403ee8f36d7f8c947dfe (patch) | |
| tree | b1ee1178e4f6703be59db6f64e0846e5fc5b9ec2 | |
| parent | a13a47e447c925ad39f0c3a4bd5c2cddfc74d3d3 (diff) | |
Fixed #3409 -- Added render_value argument to newforms PasswordInput. Thanks for the patch, scott@staplefish.com
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4523 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/newforms/widgets.py | 8 | ||||
| -rw-r--r-- | tests/regressiontests/forms/tests.py | 16 |
3 files changed, 25 insertions, 0 deletions
@@ -157,6 +157,7 @@ answer newbie questions, and generally made Django that much better: Oliver Rutherfurd <http://rutherfurd.net/> Ivan Sagalaev (Maniac) <http://www.softwaremaniacs.org/> David Schein + scott@staplefish.com serbaut@gmail.com Pete Shinners <pete@shinners.org> SmileyChris <smileychris@gmail.com> diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 585e12cc18..18bba31897 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -81,6 +81,14 @@ class TextInput(Input): class PasswordInput(Input): input_type = 'password' + def __init__(self, attrs=None, render_value=True): + self.attrs = attrs or {} + self.render_value = render_value + + def render(self, name, value, attrs=None): + if not self.render_value: value=None + return super(PasswordInput, self).render(name, value, attrs) + class HiddenInput(Input): input_type = 'hidden' is_hidden = True diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index 644f922d28..080131ad01 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -72,6 +72,22 @@ u'<input type="password" class="special" name="email" />' >>> w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}) u'<input type="password" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />' +The render_value argument lets you specify whether the widget should render +its value. You may want to do this for security reasons. +>>> w = PasswordInput(render_value=True) +>>> w.render('email', 'secret') +u'<input type="password" name="email" value="secret" />' +>>> w = PasswordInput(render_value=False) +>>> w.render('email', '') +u'<input type="password" name="email" />' +>>> w.render('email', None) +u'<input type="password" name="email" />' +>>> w.render('email', 'secret') +u'<input type="password" name="email" />' +>>> w = PasswordInput(attrs={'class': 'fun'}, render_value=False) +>>> w.render('email', 'secret') +u'<input type="password" class="fun" name="email" />' + # HiddenInput Widget ############################################################ >>> w = HiddenInput() |
