[Grok-dev] registering vocabulary
Sebastian Ware
sebastian at urbantalk.se
Thu Apr 14 04:22:30 EDT 2011
Try defining your GlobalUtility like this:
class WidgetTypeVocabulary(grok.GlobalUtility):
grok.implements(IVocabularyFactory)
grok.name(widget_type_vocabulary')
Mvh Sebastian
14 apr 2011 kl. 09.53 skrev Paolo Piersanti:
> On 04/13/2011 06:29 PM, Christian Klinger wrote:
>> Hi Paolo,
>>
>> can you paste the traceback of the error.
>>
>> And how you registerd the utility?
>
> Hi Christian
>
> I registered the vocabulary as
> grok.global_utility(WidgetTypeVocabulary,name=u"widget_type_vocabulary")
> and it works fine when I do
> getUtility(WidgetTypeVocabulary, name=u"widget_type_vocabulary")
> I can get my utility.
> The utility is implemented in this way:
>
> class WidgetTypeVocabulary(object):
> grok.implements(IVocabularyFactory)
> def __call__(self, context):
> values = (....)
> return SimpleVocabulary.fromItems(values)
>
> I also use it in a form interface as
> class IStatement(interface.Interface):
> widget_type = schema.Choice(title=_(u"Widget Type"),
> description=_(u"Widget Type"),
> vocabulary=u'widget_type_vocabulary',
> required=True)
>
> but here the exception is triggered when the grok machinery
> try to instantiate the form involved in the add or edit actions
> here is the traceback:
>
>> Traceback (most recent call last):
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.publisher-3.12.6-py2.6.egg/zope/publisher/publish.py", line 132, in publish
>> result = publication.callObject(request, obj)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/grokcore.view-2.5-py2.6.egg/grokcore/view/publication.py", line 56, in callObject
>> return super(ZopePublicationSansProxy, self).callObject(request, ob)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.app.publication-3.13.1-py2.6.egg/zope/app/publication/zopepublication.py", line 207, in callObject
>> return mapply(ob, request.getPositionalArguments(), request)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.publisher-3.12.6-py2.6.egg/zope/publisher/publish.py", line 107, in mapply
>> return debug_call(obj, args)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.publisher-3.12.6-py2.6.egg/zope/publisher/publish.py", line 113, in debug_call
>> return obj(*args)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/grokcore.formlib-1.8-py2.6.egg/grokcore/formlib/components.py", line 90, in __call__
>> self.update_form()
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/grokcore.formlib-1.8-py2.6.egg/grokcore/formlib/components.py", line 62, in update_form
>> super(GrokForm, self).update()
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py", line 758, in update
>> self.setUpWidgets()
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py", line 833, in setUpWidgets
>> adapters=self.adapters, ignore_request=ignore_request
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.formlib-4.0.5-py2.6.egg/zope/formlib/form.py", line 388, in setUpEditWidgets
>> field = field.bind(adapter)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.schema-3.7.1-py2.6.egg/zope/schema/_field.py", line 291, in bind
>> clone.vocabulary = vr.get(object, self.vocabularyName)
>> File "/home/gon/src/crm_campaign_env/crm_campaign/eggs/zope.schema-3.7.1-py2.6.egg/zope/schema/vocabulary.py", line 166, in get
>> raise VocabularyRegistryError(name)
>> VocabularyRegistryError: unknown vocabulary: u'widget_type_vocabulary'
>
> Inspectioning the vocabulary registry with pdb results in a failing
> lookup.
> Registering the vocabulary in this way:
>
> >from zope.schema.vocabulary import getVocabularyRegistry
> >getVocabularyRegistry().register(u'widget_type_vocabulary', > WidgetTypeVocabulary())
> everything is ok.
>
> Thank you for your support
>
> Paolo Piersanti
>
>
> --
> Signature for Rent - Questo spazio si affitta
> Paolo Piersanti Software Developer & System Admininistrator
>
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> https://mail.zope.org/mailman/listinfo/grok-dev
More information about the Grok-dev
mailing list