summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-02-15 05:05:43 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-02-15 05:05:43 +0000
commitb93614ada658087cbc90403ee8f36d7f8c947dfe (patch)
treeb1ee1178e4f6703be59db6f64e0846e5fc5b9ec2
parenta13a47e447c925ad39f0c3a4bd5c2cddfc74d3d3 (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--AUTHORS1
-rw-r--r--django/newforms/widgets.py8
-rw-r--r--tests/regressiontests/forms/tests.py16
3 files changed, 25 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index 02aa836f8d..ad8f876a6f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -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()