<br><div class="gmail_quote">On Thu, Aug 20, 2009 at 11:54 AM, Jeroen Michiel <span dir="ltr"><<a href="mailto:jmichiel@yahoo.com">jmichiel@yahoo.com</a>></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>
><br>
> Still the same error:<br>
> argument of type "ClassOfCompounds" is not iterable<br>
><br>
<br>
</div>That'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"CAS number")<br> ce_number = schema.TextLine(title=u"CE number")<br>
remark = schema.TextLine(title=u"Remark", required = False)<br> <br> # THIS WORKS<br> classesOfCompounds = schema.Choice(source=ClassesOfCompoundsSource(), title=u'Classes of compounds')<br>
# THIS DOES NOT WORKS<br> #classesOfCompounds = schema.List(title=u'Classes of compounds', value_type = schema.Choice(['1', '2', '3']))<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('classOfCompounds_'):<br> result.append(self[key])<br> return result<br>
<br>Here is the traceback:<br>Traceback (most recent call last):<br> File "/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py", line 133, in publish<br> result = publication.callObject(request, obj)<br>
File "/home/tbellemb/.buildout/eggs/grok-1.0a4-py2.5.egg/grok/publication.py", line 89, in callObject<br> return super(ZopePublicationSansProxy, self).callObject(request, ob)<br> File "/home/tbellemb/.buildout/eggs/zope.app.publication-3.4.3-py2.5.egg/zope/app/publication/zopepublication.py", line 167, in callObject<br>
return mapply(ob, request.getPositionalArguments(), request)<br> File "/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py", line 108, in mapply<br> return debug_call(obj, args)<br>
File "/home/tbellemb/.buildout/eggs/zope.publisher-3.4.6-py2.5.egg/zope/publisher/publish.py", line 114, in debug_call<br> return obj(*args)<br> File "/home/tbellemb/.buildout/eggs/grokcore.formlib-1.1-py2.5.egg/grokcore/formlib/components.py", line 91, in __call__<br>
return self.render()<br> File "/home/tbellemb/.buildout/eggs/grokcore.formlib-1.1-py2.5.egg/grokcore/formlib/components.py", line 74, in render<br> self.form_result = self._render_template()<br> File "/home/tbellemb/.buildout/eggs/grokcore.view-1.7-py2.5.egg/grokcore/view/components.py", line 67, in _render_template<br>
return self.template.render(self)<br> File "/home/tbellemb/.buildout/eggs/grokcore.view-1.7-py2.5.egg/grokcore/view/components.py", line 228, in render<br> return template.pt_render(namespace)<br> File "/home/tbellemb/.buildout/eggs/zope.pagetemplate-3.4.0-py2.5.egg/zope/pagetemplate/pagetemplate.py", line 115, in pt_render<br>
strictinsert=0, sourceAnnotations=sourceAnnotations)()<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 271, in __call__<br> self.interpret(self.program)<br>
File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 346, in interpret<br> handlers[opcode](self, args)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 824, in do_loop_tal<br>
self.interpret(block)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 346, in interpret<br> handlers[opcode](self, args)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 536, in do_optTag_tal<br>
self.do_optTag(stuff)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 521, in do_optTag<br> return self.no_tag(start, program)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 516, in no_tag<br>
self.interpret(program)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 346, in interpret<br> handlers[opcode](self, args)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 745, in do_insertStructure_tal<br>
structure = self.engine.evaluateStructure(expr)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py", line 696, in evaluate<br> return expression(self)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 217, in __call__<br>
return self._eval(econtext)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 211, in _eval<br> return ob()<br> File "/home/tbellemb/.buildout/eggs/zope.app.form-3.4.1-py2.5.egg/zope/app/form/browser/itemswidgets.py", line 577, in __call__<br>
return self.template()<br> File "/home/tbellemb/.buildout/eggs/zope.app.pagetemplate-3.4.1-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py", line 83, in __call__<br> return self.im_func(im_self, *args, **kw)<br>
File "/home/tbellemb/.buildout/eggs/zope.app.pagetemplate-3.4.1-py2.5.egg/zope/app/pagetemplate/viewpagetemplatefile.py", line 51, in __call__<br> sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),<br>
File "/home/tbellemb/.buildout/eggs/zope.pagetemplate-3.4.0-py2.5.egg/zope/pagetemplate/pagetemplate.py", line 115, in pt_render<br> strictinsert=0, sourceAnnotations=sourceAnnotations)()<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 271, in __call__<br>
self.interpret(self.program)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 346, in interpret<br> handlers[opcode](self, args)<br> File "/home/tbellemb/.buildout/eggs/zope.tal-3.4.1-py2.5.egg/zope/tal/talinterpreter.py", line 822, in do_loop_tal<br>
iterator = self.engine.setRepeat(name, expr)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py", line 682, in setRepeat<br> expr = self.evaluate(expr)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/tales.py", line 696, in evaluate<br>
return expression(self)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 217, in __call__<br> return self._eval(econtext)<br> File "/home/tbellemb/.buildout/eggs/zope.tales-3.4.0-py2.5.egg/zope/tales/expressions.py", line 211, in _eval<br>
return ob()<br> File "/home/tbellemb/.buildout/eggs/zope.app.form-3.4.1-py2.5.egg/zope/app/form/browser/itemswidgets.py", line 558, in choices<br> if term.value not in available_values]<br>TypeError: argument of type 'ClassOfCompounds' is not iterable<br>
<br>