<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="&#1;" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.module
        {mso-style-name:module;}
span.source-highlight
        {mso-style-name:source-highlight;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
 /* List Definitions */
 @list l0
        {mso-list-id:269357737;
        mso-list-type:hybrid;
        mso-list-template-ids:830120602 513278764 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:701;
        mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l1
        {mso-list-id:1725105538;
        mso-list-type:hybrid;
        mso-list-template-ids:1957073564 -1513823740 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-start-at:701;
        mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal>List,<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I have a fresh install of Grok 1.1 and I am working on a
login page.&nbsp; Everything works fine until I submit the form at which point
I get this:<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>*Snip*<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a></span></code><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>def</span></b>
<b><span style='color:#9C7A00'>callObject</span>(self,</b> <b>request,</b> <b>ob):</b></code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>mapply</span><b>(</b><span
style='color:#333333'>ob</span><b>,</b> <span style='color:#333333'>request</span><b>.</b><span
style='color:#333333'>getPositionalArguments</span><b>(),</b> <span
style='color:#333333'>request</span><b>)</b></span></span><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>def</span></b>
<b><span style='color:#9C7A00'>afterCall</span>(self,</b> <b>request,</b> <b>ob):</b></code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>mapply</span><b>(</b><span
style='color:#333333'>ob</span><b>,</b> <span style='color:#333333'>request</span><b>.</b><span
style='color:#333333'>getPositionalArguments</span><b>(),</b> <span
style='color:#333333'>request</span><b>)</b></span></code><o:p></o:p></p>

<pre>&lt;crary.security.authentication.Login object at 0x942232c&gt;<o:p></o:p></pre>

<p class=MsoNormal><br>
Module <span class=module>zope.publisher.publish</span>:<b>109</b> in <code><span
style='font-size:10.0pt'>mapply</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_6" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a></span></code><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>if</span></b>
<span style='color:#333333'>__debug__</span><b>:</b></code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>debug_call</span><b>(</b><span
style='color:#333333'>obj</span><b>,</b> <span style='color:#333333'>args</span><b>)</b></span></span><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>return</span></b>
<span style='color:#333333'>obj</span><b>(*</b><span style='color:#333333'>args</span><b>)</b></code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>debug_call</span><b>(</b><span
style='color:#333333'>obj</span><b>,</b> <span style='color:#333333'>args</span><b>)</b></span></code><br>
Module <span class=module>zope.publisher.publish</span>:<b>115</b> in <code><span
style='font-size:10.0pt'>debug_call</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_7" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a><b><span
style='color:#0000AF'>def</span></b> <b><span style='color:#9C7A00'>debug_call</span>(obj,</b>
<b>args):</b></span></code><span style='font-size:10.0pt;font-family:"Courier New";
display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style='color:#007F00'>#
The presence of this function allows us to set a pdb breakpoint</span></code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>obj</span><b>(*</b><span
style='color:#333333'>args</span><b>)</b></span></span><span style='font-size:
10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
<code>&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>def</span></b> <b><span
style='color:#9C7A00'>publish</span>(request,</b> <b>handle_errors=True):</b></code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>obj</span><b>(*</b><span
style='color:#333333'>args</span><b>)</b></span></code><br>
Module <span class=module>grokcore.formlib.components</span>:<b>90</b> in <code><span
style='font-size:10.0pt'>__call__</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_8" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return</span></code><span style='font-size:10.0pt;font-family:"Courier New";
display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
self.update_form()</span></span><span style='font-size:10.0pt;font-family:"Courier New";
display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
self.render()</code><br>
<code>&nbsp;&nbsp;&nbsp; </code></span><code><span style='font-size:10.0pt'><a
href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp; </a><span
style='color:#333333'>self</span><b>.</b><span style='color:#333333'>update_form</span><b>()</b></span></code><br>
Module <span class=module>grokcore.formlib.components</span>:<b>62</b> in <code><span
style='font-size:10.0pt'>update_form</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_9" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span style='color:#333333'>In</span> <span style='color:#333333'>grok</span> <span
style='color:#333333'>views</span><b>,</b> <span style='color:#333333'>the</span>
<span style='color:#333333'>update</span><b>()</b> <span style='color:#333333'>method</span>
<span style='color:#333333'>has</span> <span style='color:#333333'>a</span> <span
style='color:#333333'>different</span> <span style='color:#333333'>meaning</span><b>.</b></span></code><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
style='color:#333333'>That</span><span style='color:#FF8080;border:solid red 1.5pt;
padding:0in'>'</span><span style='color:#333333'>s</span> <span
style='color:#333333'>why</span> <span style='color:#333333'>this</span> <span
style='color:#333333'>method</span> <b><span style='color:#0000AF'>is</span></b>
<span style='color:#333333'>called</span> <span style='color:#333333'>update_form</span><b>()</b>
<b><span style='color:#0000AF'>in</span></b> <span style='color:#333333'>grok</span>
<span style='color:#333333'>forms</span><b>.</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
That's why this method is called update_form() in grok forms.&quot;&quot;&quot;</code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
super(GrokForm, self).update()</span></span><span style='font-size:10.0pt;
font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def render(self):</code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><span style='color:#333333'>super</span><b>(</b><span style='color:#333333'>GrokForm</span><b>,</b>
<span style='color:#333333'>self</span><b>).</b><span style='color:#333333'>update</span><b>()</b></span></code><br>
Module <span class=module>zope.formlib.form</span>:<b>764</b> in <code><span
style='font-size:10.0pt'>update</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_10" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>elif</span></b> <span style='color:#333333'>errors</span>
<b><span style='color:#0000AF'>is</span></b> <b><span style='color:#0000AF'>not</span></b>
<span style='color:#333333'>None</span><b>:</b></span></code><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span style='color:#333333'>self</span><b>.</b><span style='color:#333333'>form_reset</span>
<b>=</b> <span style='color:#333333'>True</span></code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span style='color:#333333'>result</span> <b>=</b> <span style='color:#333333'>action</span><b>.</b><span
style='color:#333333'>success</span><b>(</b><span style='color:#333333'>data</span><b>)</b></span></span><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span
style='color:#0000AF'>else</span>:</b></code><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span style='color:#333333'>result</span> <b>=</b> <span style='color:#333333'>None</span></code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><span style='color:#333333'>result</span> <b>=</b> <span style='color:#333333'>action</span><b>.</b><span
style='color:#333333'>success</span><b>(</b><span style='color:#333333'>data</span><b>)</b></span></code><br>
Module <span class=module>grokcore.formlib.formlib</span>:<b>33</b> in <code><span
style='font-size:10.0pt'>success</span></code> <a
href="http://zope3.crary.com:13080/portal/@@login">&nbsp; &nbsp; <span
style='color:blue;text-decoration:none'><img border=0 width=9 height=9
id="Picture_x0020_11" src="cid:image001.jpg@01CB274B.754D1ED0"
alt="http://zope3.crary.com:13080/_debug/media/plus.jpg"></span>&nbsp; &nbsp;</a><br>
<code><span style='font-size:10.0pt;display:none'><a
href="http://zope3.crary.com:13080/portal/@@login">&lt;&lt;&nbsp; </a>&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>def</span></b> <b><span style='color:#9C7A00'>success</span>(self,</b>
<b>data):</b></span></code><span style='font-size:10.0pt;font-family:"Courier New";
display:none'><br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span
style='color:#0000AF'>if</span></b> <span style='color:#333333'>self</span><b>.</b><span
style='color:#333333'>success_handler</span> <b><span style='color:#0000AF'>is</span></b>
<b><span style='color:#0000AF'>not</span></b> <span style='color:#333333'>None</span><b>:</b></code><br>
</span><span class=source-highlight><span style='display:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>self</span><b>.</b><span
style='color:#333333'>success_handler</span><b>(</b><span style='color:#333333'>self</span><b>.</b><span
style='color:#333333'>form</span><b>,</b> <b>**</b><span style='color:#333333'>data</span><b>)</b></span></span><span
style='font-size:10.0pt;font-family:"Courier New";display:none'><br>
<code>&nbsp;&nbsp;&nbsp; </code><br>
<code>&nbsp;&nbsp;&nbsp; <b><span style='color:#0000AF'>def</span></b> <b><span
style='color:#9C7A00'>Fields</span>(*args,</b> <b>**kw):</b></code></span><code><span
style='font-size:10.0pt'><a href="http://zope3.crary.com:13080/portal/@@login">&gt;&gt;&nbsp;
</a><b><span style='color:#0000AF'>return</span></b> <span style='color:#333333'>self</span><b>.</b><span
style='color:#333333'>success_handler</span><b>(</b><span style='color:#333333'>self</span><b>.</b><span
style='color:#333333'>form</span><b>,</b> <b>**</b><span style='color:#333333'>data</span><b>)</b></span></code><br>
<b>TypeError: handle_login() keywords must be strings<o:p></o:p></b></p>

<p class=MsoNormal><b><o:p>&nbsp;</o:p></b></p>

<p class=MsoNormal>The issue is the data that makes its way to the
&#8220;success_handler&#8221; is a dictionary with Unicode keywords.&nbsp; At
that point &#8220;success_handler&#8221; tries to convert it to a variable
length argument list which fails:<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>&gt;&gt;&gt; def test(**d):<o:p></o:p></p>

<p class=MsoNormal>...&nbsp;&nbsp;&nbsp;&nbsp; return d<o:p></o:p></p>

<p class=MsoNormal>...<o:p></o:p></p>

<p class=MsoNormal>&gt;&gt;&gt; d={u'a':1, 'b':2}<o:p></o:p></p>

<p class=MsoNormal>&gt;&gt;&gt; test(**d)<o:p></o:p></p>

<p class=MsoNormal>Traceback (most recent call last):<o:p></o:p></p>

<p class=MsoNormal>&nbsp; File &quot;&lt;stdin&gt;&quot;, line 1, in
&lt;module&gt;<o:p></o:p></p>

<p class=MsoNormal>TypeError: test() keywords must be strings<o:p></o:p></p>

<p class=MsoNormal>&gt;&gt;&gt;<o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I poked around a bit and found &nbsp;that the dictionary is
created in zope.formlib.form in &#8220;getWidgetsData&#8221; and the keywords
are produced by &#8220;_widgetKey&#8221; from the actual widget name.&nbsp; In
both functions there is no conversion to unicode so they (the widget names) are
Unicode going in.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>You can work around this easy enough by changing:<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>def _widgetKey(widget, form_prefix):<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; name = widget.name<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; if name.startswith(form_prefix):<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name =
name[len(form_prefix):]<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; else:<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise
ValueError(&quot;Name does not match prefix&quot;, name, form_prefix)<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; return name<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>to:<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>def _widgetKey(widget, form_prefix):<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; name = widget.name<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; if name.startswith(form_prefix):<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name =
name[len(form_prefix):]<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; else:<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise
ValueError(&quot;Name does not match prefix&quot;, name, form_prefix)<o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; return str(name)<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>But I am wondering if this is the place to deal with it, is
there anyone out there that has a better idea?<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Regards,<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Jeff Peterson<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>