<br><div class="gmail_quote">On Thu, Aug 20, 2009 at 11:54 AM, Jeroen Michiel <span dir="ltr">&lt;<a href="mailto:jmichiel@yahoo.com">jmichiel@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
<br>
Thomas Bellembois-3 wrote:<br>
&gt;<br>
&gt; Still the same error:<br>
&gt; argument of type &quot;ClassOfCompounds&quot; is not  iterable<br>
&gt;<br>
<br>
</div>That&#39;s odd...<br>
Can you post the relevant parts of your code, and perhaps a traceback of the<br>
error?<br>
<font color="#888888">--</font></blockquote></div>Yes, thanks for your help.<br><br>A part of my interface.py:<br>class ClassesOfCompoundsSource(BasicSourceFactory):<br>    <br>    def getValues(self):<br>        return grok.getSite().classOfCompoundsList()<br>
    <br>    def getTitle(self, value):<br>        return <a href="http://value.name">value.name</a><br>    <br>class IMolecule(interface.Interface):<br>    cas_number = schema.TextLine(title=u&quot;CAS number&quot;)<br>    ce_number = schema.TextLine(title=u&quot;CE number&quot;)<br>
    remark = schema.TextLine(title=u&quot;Remark&quot;, required = False)<br>    <br>    # THIS WORKS<br>    classesOfCompounds = schema.Choice(source=ClassesOfCompoundsSource(), title=u&#39;Classes of compounds&#39;)<br>
    # THIS DOES NOT WORKS<br>    #classesOfCompounds = schema.List(title=u&#39;Classes of compounds&#39;, value_type = schema.Choice([&#39;1&#39;, &#39;2&#39;, &#39;3&#39;]))<br><br>A part of my app.py:<br>class Chimitheque(grok.Application, grok.Container):<br>
    <br>    def classOfCompoundsList(self):<br>        result = []<br>        for key in self.keys():<br>            if key.startswith(&#39;classOfCompounds_&#39;):<br>                result.append(self[key])<br>        return result<br>
<br>Here is the traceback:<br>Traceback (most recent call last):<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py&quot;, line 133, in publish<br>    result = publication.callObject(request, obj)<br>
  File &quot;/home/tbellemb/.buildout/eggs/grok-1.0a4-py2.5.egg/grok/publication.py&quot;, line 89, in callObject<br>    return super(ZopePublicationSansProxy, self).callObject(request, ob)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.app.publication-3.4.3-py2.5.egg/zope/app/publication/zopepublication.py&quot;, line 167, in callObject<br>
    return mapply(ob, request.getPositionalArguments(), request)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py&quot;, line 108, in mapply<br>    return debug_call(obj, args)<br>
  File &quot;/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py&quot;, line 114, in debug_call<br>    return obj(*args)<br>  File &quot;/home/tbellemb/.buildout/eggs/grokcore.formlib-1.1-py2.5.egg/grokcore/formlib/components.py&quot;, line 91, in __call__<br>
    return self.render()<br>  File &quot;/home/tbellemb/.buildout/eggs/grokcore.formlib-1.1-py2.5.egg/grokcore/formlib/components.py&quot;, line 74, in render<br>    self.form_result = self._render_template()<br>  File &quot;/home/tbellemb/.buildout/eggs/grokcore.view-1.7-py2.5.egg/grokcore/view/components.py&quot;, line 67, in _render_template<br>
    return self.template.render(self)<br>  File &quot;/home/tbellemb/.buildout/eggs/grokcore.view-1.7-py2.5.egg/grokcore/view/components.py&quot;, line 228, in render<br>    return template.pt_render(namespace)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.pagetemplate-3.4.0-py2.5.egg/zope/pagetemplate/pagetemplate.py&quot;, line 115, in pt_render<br>
    strictinsert=0, sourceAnnotations=sourceAnnotations)()<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 271, in __call__<br>    self.interpret(self.program)<br>
  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 346, in interpret<br>    handlers[opcode](self, args)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 824, in do_loop_tal<br>
    self.interpret(block)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 346, in interpret<br>    handlers[opcode](self, args)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 536, in do_optTag_tal<br>
    self.do_optTag(stuff)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 521, in do_optTag<br>    return self.no_tag(start, program)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 516, in no_tag<br>
    self.interpret(program)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 346, in interpret<br>    handlers[opcode](self, args)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 745, in do_insertStructure_tal<br>
    structure = self.engine.evaluateStructure(expr)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py&quot;, line 696, in evaluate<br>    return expression(self)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py&quot;, line 217, in __call__<br>
    return self._eval(econtext)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py&quot;, line 211, in _eval<br>    return ob()<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.app.form-3.4.1-py2.5.egg/zope/app/form/browser/itemswidgets.py&quot;, line 577, in __call__<br>
    return self.template()<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.app.pagetemplate-3.4.1-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py&quot;, line 83, in __call__<br>    return self.im_func(im_self, *args, **kw)<br>
  File &quot;/home/tbellemb/.buildout/eggs/zope.app.pagetemplate-3.4.1-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py&quot;, line 51, in __call__<br>    sourceAnnotations=getattr(debug_flags, &#39;sourceAnnotations&#39;, 0),<br>
  File &quot;/home/tbellemb/.buildout/eggs/zope.pagetemplate-3.4.0-py2.5.egg/zope/pagetemplate/pagetemplate.py&quot;, line 115, in pt_render<br>    strictinsert=0, sourceAnnotations=sourceAnnotations)()<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 271, in __call__<br>
    self.interpret(self.program)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 346, in interpret<br>    handlers[opcode](self, args)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py&quot;, line 822, in do_loop_tal<br>
    iterator = self.engine.setRepeat(name, expr)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py&quot;, line 682, in setRepeat<br>    expr = self.evaluate(expr)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py&quot;, line 696, in evaluate<br>
    return expression(self)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py&quot;, line 217, in __call__<br>    return self._eval(econtext)<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py&quot;, line 211, in _eval<br>
    return ob()<br>  File &quot;/home/tbellemb/.buildout/eggs/zope.app.form-3.4.1-py2.5.egg/zope/app/form/browser/itemswidgets.py&quot;, line 558, in choices<br>    if term.value not in available_values]<br>TypeError: argument of type &#39;ClassOfCompounds&#39; is not iterable<br>
<br>