Author: jab Date: 2009-02-19 11:18:50 -0700 (Thu, 19 Feb 2009) New Revision: 3787
Modified: FormEncode/trunk/formencode/htmlfill.py FormEncode/trunk/tests/test_htmlfill.py Log: apply patches from http://sourceforge.net/tracker2/?func=detail&aid=2616831&group_id=91231&atid=596416 to make htmlfill.render(..., defaults={}, force_defaults=True) behave consistently for text, password, and hidden inputs when passing (values should be cleared). includes now-passing tests. Modified: FormEncode/trunk/formencode/htmlfill.py =================================================================== --- FormEncode/trunk/formencode/htmlfill.py 2009-02-19 17:00:56 UTC (rev 3786) +++ FormEncode/trunk/formencode/htmlfill.py 2009-02-19 18:18:50 UTC (rev 3787) @@ -367,7 +367,7 @@ and self.errors.get(self.get_attr(attrs, 'name'))): self.add_class(attrs, self.error_class) if t in ('text', 'hidden'): - if value is None: + if value is None and not self.force_defaults: value = self.get_attr(attrs, 'value', '') self.set_attr(attrs, 'value', value) self.write_tag('input', attrs, startend) @@ -401,8 +401,9 @@ elif t == 'file': pass # don't skip next elif t == 'password': - self.set_attr(attrs, 'value', value or - self.get_attr(attrs, 'value', '')) + if not self.force_defaults: + value = value or self.get_attr(attrs, 'value', '') + self.set_attr(attrs, 'value', value) self.write_tag('input', attrs, startend) self.skip_next = True self.add_key(name) Modified: FormEncode/trunk/tests/test_htmlfill.py =================================================================== --- FormEncode/trunk/tests/test_htmlfill.py 2009-02-19 17:00:56 UTC (rev 3786) +++ FormEncode/trunk/tests/test_htmlfill.py 2009-02-19 18:18:50 UTC (rev 3787) @@ -134,6 +134,25 @@ dict(tags=[])) == '<input type="checkbox" name="tags" value="2" />') +def test_not_force_defaults_text(): + html = """<input type="text" name="text-1" class="my_text" value="i like this text" />""" + rendered_html = htmlfill.render(html, defaults=dict(), + force_defaults=False) + assert html == rendered_html, rendered_html + +def test_not_force_defaults_text_value(): + html = """<input type="text" name="text-1" class="my_text" value="i like this text" />""" + expected_html = """<input type="text" name="text-1" class="my_text" value="this text is better" />""" + rendered_html = htmlfill.render(html, defaults={"text-1": "this text is better"}, + force_defaults=False) + assert expected_html == rendered_html, rendered_html + +def test_force_defaults_text(): + html = """<input type="text" name="text-1" class="my_text" value="i like this text" />""" + expected_html = """<input type="text" name="text-1" class="my_text" value="" />""" + rendered_html = htmlfill.render(html, defaults=dict()) + assert expected_html == rendered_html, rendered_html + def test_not_force_defaults_textarea(): html = """<textarea name="textarea-1" class="my_textarea">i like this text</textarea>""" rendered_html = htmlfill.render(html, defaults=dict(), @@ -154,6 +173,25 @@ rendered_html = htmlfill.render(html, defaults=dict()) assert expected_html == rendered_html, rendered_html +def test_not_force_defaults_password(): + html = """<input type="password" name="password-1" class="my_password" value="i like this password" />""" + rendered_html = htmlfill.render(html, defaults=dict(), + force_defaults=False) + assert html == rendered_html, rendered_html + +def test_not_force_defaults_password_value(): + html = """<input type="password" name="password-1" class="my_password" value="i like this password" />""" + expected_html = """<input type="password" name="password-1" class="my_password" value="this password is better" />""" + rendered_html = htmlfill.render(html, defaults={"password-1": "this password is better"}, + force_defaults=False) + assert expected_html == rendered_html, rendered_html + +def test_force_defaults_password(): + html = """<input type="password" name="password-1" class="my_password" value="i like this password" />""" + expected_html = """<input type="password" name="password-1" class="my_password" value="" />""" + rendered_html = htmlfill.render(html, defaults=dict()) + assert expected_html == rendered_html, rendered_html + def test_not_force_defaults_checkbox(): html = """<input type="checkbox" name="checkbox-1" class="my_checkbox" checked="checked" value="cb">""" rendered_html = htmlfill.render(html, defaults=dict(), ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ FormEncode-CVS mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/formencode-cvs
