<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> </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> </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 <form> that return
my dictionnary. <span style='mso-spacerun:yes'> </span>I’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’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> </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> </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’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> </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 <form> and it’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> </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> </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 = "select * from plan where
plan_id = '%s'" %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> </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 = """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""" % 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> </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> </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 = "summary_edit.html"<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> </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> </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> </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> </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’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’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> </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'><form action="/summary/edit/update"
method="post" enctype="multipart/form-data" view="fillFromSQL"
model="planData"><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'><table
border="0" width="100%" cellspacing="1" cellpadding="2"><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><tr><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><td class="label" width="25%"
valign="top"><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>&nbsp;Cat&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></td><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><td class="area" width="75%"><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><input
class="box" type="checkbox" name="categories" value="1000001"
/>1 étage<br /> <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><input
class="box" type="checkbox" name="categories" value="1000002"
/>1/2 étages<br/> <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><input
class="box" type="checkbox" name="categories" value="1000003"
/>2 étages<br/> <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><input class="box" type="checkbox"
name="categories" value="1000004" />Split-Level<br />
<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><input
class="box" type="checkbox" name="categories" value="1000005"
/>Chalet 4 saisons<br /> <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><input
class="box" type="checkbox" name="categories" value="1000006"
/>Bi-Génération<br /> <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><input
class="box" type="checkbox" name="categories" value="1000007"
/>Semi-Détaché<br /> <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><input
class="box" type="checkbox" name="categories" value="1000008"
/>Townhouse<br /> <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><input
class="box" type="checkbox" name="categories" value="1000009"
/>Duplex<br /> <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><input
class="box" type="checkbox" name="categories" value="1000010"
/>Triplex<br /> <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><input
class="box" type="checkbox" name="categories" value="1000011"
/>Appartement (4+)<br /> <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></td><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></tr><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></table><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'></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'><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'>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>