Am 13.02.2008 um 13:16 schrieb Wichert Akkerman:

vocabulary factories take a context as argument.

This vocabulary is already implemented in, you
can just use that:

Thanks very much for this. Would it be possible to include the two portal_types vocabularies in CMFDefault?

I got the vocabulary in my view class but then I got an Assertion Error relating to it:

2008-02-13 21:16:34 ERROR Zope.SiteErrorLog 
Traceback (innermost last):
 Module ZPublisher.Publish, line 119, in publish
 Module ZPublisher.mapply, line 88, in mapply
 Module ZPublisher.Publish, line 42, in call_object
 Module zope.formlib.form, line 769, in __call__
 Module Products.Five.formlib.formbase, line 55, in update
 Module zope.formlib.form, line 732, in update
 Module Products.camaoCms.browser.masterpage, line 86, in setUpWidgets
 Module Products.CMFDefault.formlib.form, line 117, in setUpWidgets
 Module zope.formlib.form, line 379, in setUpEditWidgets
 Module zope.schema._field, line 244, in bind

Looking at the source:

   def bind(self, object):
       """See zope.schema._bootstrapinterfaces.IField."""
       clone = super(Choice, self).bind(object)
       # get registered vocabulary if needed:
       if IContextSourceBinder.providedBy(self.vocabulary):
           clone.vocabulary = self.vocabulary(object)
           assert ISource.providedBy(clone.vocabulary)
elif clone.vocabulary is None and self.vocabularyName is not None:
           vr = getVocabularyRegistry()
           clone.vocabulary = vr.get(object, self.vocabularyName)
           assert ISource.providedBy(clone.vocabulary)

looks like I'm a victiom of copy & paste programming (again! ;-) The vocabulary definitely doesn't provide ISource but I can't seem to get this to work: either by adding it as a parameter to implements() or in ZCML leads to a lookup error:

ComponentLookupError: (<InterfaceClass zope.schema.interfaces.IVocabularyFactory>, 'cmf.UserFriendlyContentTypes')

mm, guess I need to double check my declarations. I thought that


is equivalent to provides="...IMyInterface" in ZCML

BTW. this is probably academic but I noticed the top of the is
from import IVocabularyFactory
Is there a reason for not importing the interface directly?

I'll also be reading up ISource in Philip's book.

Charlie Clark
Helmholtzstr. 20
D- 40215
Tel: +49-211-938-5360
GSM: +49-178-782-6226

Zope-CMF maillist  -

See for bug reports and feature requests

Reply via email to