<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:m="http://schemas.microsoft.com/office/2004/12/omml" 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)">
<style>
<!--
 /* Font Definitions */
 @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;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        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;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</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=Section1>

<p class=MsoNormal>Hi Christian,<o:p></o:p></p>

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

<p class=MsoNormal>As you asked, I send you the Form and interface code:<o:p></o:p></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:blue'>class</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> <b><span style='background:blue;
mso-highlight:blue'>AddCandidateForm</span></b>(grok.AddForm):</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;
grok.context(IResultGroup)</span><span style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; form_fields =
grok.AutoFields(ICandidate)</span><span style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; grok.name(</span><i><span
style='font-size:10.0pt;font-family:"Courier New";color:#00AA00'>'add_candidate'</span></i><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>)</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; </span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; </span><i><span
style='font-size:10.0pt;font-family:"Courier New";color:#7D7D7D'>@grok.action</span></i><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>(</span><i><span
style='font-size:10.0pt;font-family:"Courier New";color:#00AA00'>'Add
Candidate'</span></i><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>)</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; </span><span
style='font-size:10.0pt;font-family:"Courier New";color:blue'>def</span><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> <b>Add</b>(<i>self</i>,
**data):</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cnd = component.createObject(u</span><i><span style='font-size:10.0pt;
font-family:"Courier New";color:#00AA00'>'arts.models.Candidate'</span></i><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>)</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i>self</i>.applyData(cnd, **data)</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i>self</i>.context.addCandidate(cnd)</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i>self</i>.redirect(<i>self</i>.url(cnd) )</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

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

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:blue'>class</span><span style='font-size:10.0pt;
font-family:"Courier New";color:black'> <b><span style='background:blue;
mso-highlight:blue'>ICandidate</span></b>(Interface):</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; video =
schema.Choice(title=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'Video'</span></i><span style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, description=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'What video sequence is this candidate for?'</span></i><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, required = </span><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>True</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, source=sources.VideoSource())</span><span style='font-size:10.0pt;font-family:
"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; data_types =
schema.List(title=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'Data Type(s)'</span></i><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
description=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'What type(s) of data does this candidate contain?'</span></i><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, required = </span><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>True</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
,value_type=schema.Choice(source=sources.CandidateDataTypeSource()))</span><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; data_format =
schema.Choice(title=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'Data Format'</span></i><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, description=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'What is the format of the data?'</span></i><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, required = </span><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>True</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, source=sources.DataFormatSource())</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; file =
schema.Bytes(title=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'Candidate File'</span></i><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
description=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'The File containing the data'</span></i><span style='font-size:
10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, required = </span><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>True</span><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>)</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp; platform =
schema.Choice(title=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'Hardware Platform'</span></i><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, description=u</span><i><span style='font-size:10.0pt;font-family:"Courier New";
color:#00AA00'>'What Hardware Platform was this test run on?'</span></i><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, required = </span><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>True</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
font-family:"Courier New";color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, source=sources.PlatformSource())</span><span style='font-size:10.0pt;
font-family:"Courier New"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp; board = schema.TextLine(title=u</span><i><span
style='font-size:10.0pt;font-family:"Courier New";color:#00AA00'>'hardware ID'</span></i><span
style='font-size:10.0pt;font-family:"Courier New";color:black'>)<o:p></o:p></span></p>

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

<p class=MsoNormal>The &#8220;*Data Type(s)&#8221; label could not be looked up
as you can see in the error message:<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>File
&quot;c:\clearcase\kdg_view_art\qualitycontrol\art_server\src\arts\all_tests\products_doctest.txt&quot;,<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>line 278, in products_doctest.txt<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>Failed example:<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;
browser.getControl('*Data Type(s)').value = ['Inverse Directions',]<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>Exception raised:<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp; Traceback
(most recent call last):<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
File &quot;c:\documents and
settings\kdg\.buildout\eggs\zope.testing-3.6.0-py2.5.egg\zope\testing\d<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>octest.py&quot;, line 1356, in
__run<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
compileflags, 1) in test.globs<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
File &quot;&lt;doctest products_doctest.txt[74]&gt;&quot;, line 1, in
&lt;module&gt;<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
browser.getControl('*Data Type(s)').value = ['Inverse Directions',]<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
File &quot;c:\documents and
settings\kdg\.buildout\eggs\zope.testbrowser-3.4.2-py2.5.egg\zope\testb<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>rowser\browser.py&quot;, line
337, in getControl<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
control, form = disambiguate(intermediate, msg, index)<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
File &quot;c:\documents and
settings\kdg\.buildout\eggs\zope.testbrowser-3.4.2-py2.5.egg\zope\testb<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>rowser\browser.py&quot;, line 50,
in disambiguate<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
raise LookupError(msg)<o:p></o:p></p>

<p class=MsoNormal style='margin-left:36.0pt'>&nbsp;&nbsp;&nbsp; LookupError:
label '*Data Type(s)'<o:p></o:p></p>

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

<p class=MsoNormal>Any idea to make a selection for the &#8216;*Data Type(s)&#8217;
control?<o:p></o:p></p>

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

<p class=MsoNormal>Best regards,<o:p></o:p></p>

<p class=MsoNormal><b><span lang=NL-BE style='font-size:10.0pt;font-family:
"Arial","sans-serif"'>Kris Degryse</span></b><span lang=NL-BE style='font-size:
10.0pt;font-family:"Arial","sans-serif"'><br>
<b>R&amp;D Test Engineer</b><br>
<br>
<br>
</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

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

</div>

</body>

</html>