<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi all,<div><br></div><div>Just for the benifit of someone else who gets lost, here is the answer: Sources are the way to go.</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, FreeSans, Helvetica, sans-serif; border-collapse: collapse; color: rgb(51, 51, 51); font-size: 14px; line-height: 20px; ">from zc.sourcefactory.basic import BasicSourceFactory&nbsp;<br><br>class AccountMasterSource(BasicSourceFactory):&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def getValues(self):&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return grok.getSite()['AccountMaster'].values()&nbsp;&nbsp;#Dynamically generated.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def getTitle(self, value):&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return <a href="http://value.name">value.name</a>&nbsp;<br><br>....&nbsp;<br><br><br>class IGLLine(interface.Interface):&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"""A GL Line"""&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;account = schema.Choice(title=u"Account", source=AccountMasterSource())&nbsp;</span></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;"><br></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;">Also see:</span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;"><a href="http://grok.zope.org/documentation/how-to/using-sources-in-your-forms">http://grok.zope.org/documentation/how-to/using-sources-in-your-forms</a></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;"><br></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;">I have a question, -- why is this page marked as outdated?</span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;"><br></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;">Regards,</span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;">Adam</span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px;"><br></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, FreeSans, Helvetica, sans-serif" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 20px; "><br></span></font><div><div><div>On 8 Jan 2011, at 10:23 AM, Adam Summers wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi Group,<br><br>I'm using grok 1.2.1, and I have a problem calling a vocab in an addform:<br><br>My vocabulary is as follows:<br><br>class AccountMasterVocabularies(grok.GlobalUtility):<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grok.implements(schema.interfaces.IVocabularyFactory)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://grok.name">grok.name</a>('accnt')<br><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def __call__(self, context):<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(schema.vocabulary.SimpleVocabulary([<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;schema.vocabulary.SimpleTerm('01', 'term 1', u'Really'),<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;schema.vocabulary.SimpleTerm('02', 'term 2', u'Truly') ]))<br><br>(So I would expect the vocab to be registered as 'accnt', no?)<br><br>Then I have an Schema/Model as follows:<br><br>class IGLLine(interface.Interface):<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"""A Line"""<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;account = schema.Choice(title=u"Account", vocabulary='accnt')<br><br>class GLLine(grok.Model):<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"""The implementation of the GLLine"""<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grok.context(GLLineContainer)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grok.implements(IGLLine)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;account = None<br><br>However, I get a VocabularyRegistryError because the vocabulary is unknown (see below). What am I missing????<br><br>Thanks in advance,<br>Adam<br><br><br>File '/Users/adamsummers1/.buildout/eggs/grok-1.2.1-py2.6.egg/grok/publication.py', line 90 in callObject<br> &nbsp;return super(ZopePublicationSansProxy, self).callObject(request, ob)<br>File '/Users/adamsummers1/.buildout/eggs/zope.app.publication-3.12.0-py2.6.egg/zope/app/publication/zopepublication.py', line 207 in callObject<br> &nbsp;return mapply(ob, request.getPositionalArguments(), request)<br>&lt;groktwotwo.app.GLLineAddForm object at 0x303d610&gt;<br>File '/Users/adamsummers1/.buildout/eggs/zope.publisher-3.12.4-py2.6.egg/zope/publisher/publish.py', line 107 in mapply<br> &nbsp;return debug_call(obj, args)<br>File '/Users/adamsummers1/.buildout/eggs/zope.publisher-3.12.4-py2.6.egg/zope/publisher/publish.py', line 113 in debug_call<br> &nbsp;return obj(*args)<br>File '/Users/adamsummers1/.buildout/eggs/grokcore.formlib-1.6-py2.6.egg/grokcore/formlib/components.py', line 90 in __call__<br> &nbsp;self.update_form()<br>File '/Users/adamsummers1/.buildout/eggs/grokcore.formlib-1.6-py2.6.egg/grokcore/formlib/components.py', line 62 in update_form<br> &nbsp;super(GrokForm, self).update()<br>File '/Users/adamsummers1/.buildout/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py', line 758 in update<br> &nbsp;self.setUpWidgets()<br>File '/Users/adamsummers1/.buildout/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py', line 739 in setUpWidgets<br> &nbsp;form=self, adapters=self.adapters, ignore_request=ignore_request)<br>File '/Users/adamsummers1/.buildout/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py', line 266 in setUpWidgets<br> &nbsp;field = field.bind(context)<br>File '/Users/adamsummers1/.buildout/eggs/zope.schema-3.7.0-py2.6.egg/zope/schema/_field.py', line 291 in bind<br> &nbsp;clone.vocabulary = vr.get(object, self.vocabularyName)<br>File '/Users/adamsummers1/.buildout/eggs/zope.schema-3.7.0-py2.6.egg/zope/schema/vocabulary.py', line 166 in get<br> &nbsp;raise VocabularyRegistryError(name)<br>VocabularyRegistryError: unknown vocabulary: 'accnt'<br><br>On 27 Nov 2009, at 4:48 PM, Kathy Manwaring wrote:<br><br><blockquote type="cite">Hi Sebastian,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Thank you so much for such a quick response and for including an actual<br></blockquote><blockquote type="cite">code example!<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I am on a 3 day conference at the moment, but will try this out as soon as<br></blockquote><blockquote type="cite">I can next week.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Kathy<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Sebastian Ware wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite">This is what I do. I have a field defined in an interface:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"> gallery_id = schema.Choice(title=u"Gallery", vocabulary=u"Published<br></blockquote></blockquote><blockquote type="cite">NewProductGalleries")<br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">The vocabulary looks like this (it is a bit dirty, but it might help you<br></blockquote></blockquote><blockquote type="cite">in the right direction):<br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><br>_______________________________________________<br>Grok-dev mailing list<br><a href="mailto:Grok-dev@zope.org">Grok-dev@zope.org</a><br>https://mail.zope.org/mailman/listinfo/grok-dev<br></div></blockquote></div><br></div></div></body></html>