<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 10">
<meta name=Originator content="Microsoft Word 10">
<link rel=File-List href="cid:filelist.xml@01C3AF80.3B39BC20">
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:EnvelopeVis/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;
        text-underline:single;}
span.StyleCourrierlectronique17
        {mso-style-type:personal-compose;
        mso-style-noshow:yes;
        mso-ansi-font-size:10.0pt;
        mso-bidi-font-size:10.0pt;
        font-family:Arial;
        mso-ascii-font-family:Arial;
        mso-hansi-font-family:Arial;
        mso-bidi-font-family:Arial;
        color:windowtext;}
span.GramE
        {mso-style-name:"";
        mso-gram-e:yes;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */ 
 table.MsoNormalTable
        {mso-style-name:"Tableau Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";}
</style>
<![endif]-->
</head>

<body lang=FR link=blue vlink=purple style='tab-interval:35.4pt'>

<div class=Section1>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>I have a form in a web page and I need to fill it with many sql queries
but only the first time the page is rendered.<span style='mso-spacerun:yes'> 
</span><o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>The other times, I want to fill it with the data from request.args.<o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>I decided to build a dictionnary that looks like the dictionnary of request.args
to be able to use only one function to validate and fill my form.<o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>My function that fill my forms need to receive the dictionnary, the
document(node that I need to change) and a signature (signature is a list of
the name and the type of each elements from the form that need to be fill).<o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>In my template, I defined a wmfactory in the tag &lt;form&gt; that return
my dictionnary. <span style='mso-spacerun:yes'> </span>I&#8217;ve also define a
wvfactory that call my function to fill the form.<o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>The problems is that wmfactory return a deferred so in wvfactory I have
to call my function to fill like this: <span
style='mso-spacerun:yes'> </span>return model.getData(request).addCallback(my
function).<span style='mso-spacerun:yes'>  </span>But I think that return doesn&#8217;t
wait that the addCallback is done.<o:p></o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><b><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-weight:
bold'>Is there something I can do to make my returns wait for the addCallback
to return the new node filled with the dictionnary of data.<o:p></o:p></span></font></b></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><i><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-style:
italic'>Here&#8217;s a part of my code:<o:p></o:p></span></font></i></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>#verify is the function that
fill and verify my form<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>class handle:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def __init__(self):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>pass<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def verify(self, dict, doc, signature):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span># dict is the dictionnary from the sql
queries of the request.args<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span># doc is the node &lt;form&gt; and it&#8217;s
child<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>error = 0<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>for item in signature:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>nodeList = domhelpers.locateNodes(doc,
'name', item[0])<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>#INTEGER, FLOAT and STRING<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>if item[1] == 'integer' or item[1]
== 'float' or item[1] == 'string':<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                </span>pass<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>#CHECKBOX<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>elif item[1] == 'checkbox':<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                </span>for node in nodeList:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><span style='mso-spacerun:yes'>                    </span># <span
class=GramE>dict</span> est None s'il n'est pas cochee<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                    </span>if dict.get(item[0]) != None
and str(node.getAttribute('value')) in dict.get(item[0]):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                        </span>print 'checked'<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                        </span>node.setAttribute('checked',
'checked')<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                        </span>print node<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                    </span>else:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                        </span>if item[2] == 'true':<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                            </span>error = 1<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                            </span>l = microdom.lmx(node)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                            </span>l.span(style='color:
red').text('donnees obligatoires')<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return doc<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'># class that execute the
queries needed<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>class SummaryEditDB:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def __init__(self, dbpool):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>self.dbpool = dbpool<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def getSummary(self, plan_id):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>sql = &quot;select * from plan where
plan_id = '%s'&quot; %plan_id<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self.dbpool.runQueryDict(sql)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def getCategoriesIdByPlanId(self, plan_id):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>sql = &quot;&quot;&quot;select
to_plan_category_id from plan_categories<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                 </span>where to_plan_id='%s' order by
to_plan_category_id&quot;&quot;&quot; % plan_id<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self.dbpool.runQueryDict(sql)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>class SummaryEditPage(pages.BasePage):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>templateFile = &quot;summary_edit.html&quot;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def initialize(self, dbpool, *args):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>self.dbpool = dbpool<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>self.db = SummaryEditDB(self.dbpool)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><span style='mso-spacerun:yes'>        </span>self.signature
= (('categories', 'checkbox', 'false', 'valeurs non correctes'))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><span style='mso-spacerun:yes'>    </span></span></font><font
size=2 face=Arial><span lang=EN-CA style='font-size:10.0pt;font-family:Arial;
mso-ansi-language:EN-CA'>def executeSQL(self, plan_id):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>def createSummaryDict(results, newDict):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>for item in results[0]:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                </span>for elem in self.signature:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                    </span>if item == elem[0]:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                       </span><span
style='mso-spacerun:yes'> </span>newDict[item] = results[0][item]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>return self.db.getCategoriesIdByPlanId(plan_id).addCallback(createCategoriesDict,
newDict)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>def createCategoriesDict(results,
newDict):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>newDict['categories'] = []<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>for item in results:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                </span>newDict['categories'].append(str(item.get('to_plan_category_id')))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>return newDict<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>newDict = {}<span
style='mso-spacerun:yes'>    </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self.db.getSummary(plan_id).addCallback(createSummaryDict,
newDict)<span style='mso-spacerun:yes'>    </span># first addCallback to fill
the dictionnary<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                 </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def setUp(self, request, *args):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>self.planData = self.executeSQL(plan_id)
#this call the function that return the dictionnary with the data (deferred)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>   </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def wmfactory_planData(self, request):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self.planData<span
style='mso-spacerun:yes'>          </span># Usually, when I return an SQL
queries, the model is not deferred but in this case, it is<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def wvfactory_fillFromSQL(self, request,
node, model):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>def format(results):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>print results<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>            </span>return handle().verify(results,
node, self.signature) # the function that fill the form (replace attributes in
the node)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>          </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self.planData.addCallback(format)<span
style='mso-spacerun:yes'>   </span># to be able to see the results of
self.planData, I need to use a addCallback to be able to see the results<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>                                                                      
</span>and to call the form filler.<span style='mso-spacerun:yes'>  </span>But
I seems that it doesn&#8217;t wait to the addCallback to be done<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>    </span>def wchild_update(self, request):<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span>return self<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span
style='mso-spacerun:yes'>        </span><o:p></o:p></span></font></p>

<p class=MsoNormal><i><font size=2 face=Arial><span lang=EN-CA
style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA;font-style:
italic'>Here&#8217;s a part of my template file:<o:p></o:p></span></font></i></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>&lt;form action=&quot;/summary/edit/update&quot;
method=&quot;post&quot; enctype=&quot;multipart/form-data&quot; view=&quot;fillFromSQL&quot;
model=&quot;planData&quot;&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:35.4pt'><font size=2 face=Arial><span
lang=EN-CA style='font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>&lt;table
border=&quot;0&quot; width=&quot;100%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;2&quot;&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span>&lt;tr&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span>&lt;td class=&quot;label&quot; width=&quot;25%&quot;
valign=&quot;top&quot;&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&amp;nbsp;Cat&amp;eacute;gories
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span>&lt;/td&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span>&lt;td class=&quot;area&quot; width=&quot;75%&quot;&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000001&quot;
/&gt;1 étage&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000002&quot;
/&gt;1/2 étages&lt;br/&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000003&quot;
/&gt;2 étages&lt;br/&gt; <span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span>&lt;input class=&quot;box&quot; type=&quot;checkbox&quot;
name=&quot;categories&quot; value=&quot;1000004&quot; /&gt;Split-Level&lt;br /&gt;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000005&quot;
/&gt;Chalet 4 saisons&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000006&quot;
/&gt;Bi-Génération&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000007&quot;
/&gt;Semi-Détaché&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000008&quot;
/&gt;Townhouse&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000009&quot;
/&gt;Duplex&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000010&quot;
/&gt;Triplex&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span><span style='mso-tab-count:1'>            </span>&lt;input
class=&quot;box&quot; type=&quot;checkbox&quot; name=&quot;categories&quot; value=&quot;1000011&quot;
/&gt;Appartement (4+)&lt;br /&gt; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span><span
style='mso-tab-count:1'>            </span>&lt;/td&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span><span style='mso-tab-count:1'>            </span>&lt;/tr&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><span style='mso-tab-count:
1'>            </span>&lt;/table&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>&lt;/form&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>I really need help, so if someone
wants to help me, it will be appreciate.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>Thx in advance<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-CA style='font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-CA'>Vicky<o:p></o:p></span></font></p>

</div>

</body>

</html>