On Sun, 28 Jan 2007 18:51:07 +0100
David Johnson <[EMAIL PROTECTED]> wrote:

> Does anyone know where I can find the latest methods on using  
> vocabularies?  I've using one approach for a while now using  
> SimpleVocabulary but that stopped working when I upgraded to 3.3.   
> The errors are "SimpleVocabulary is not called".
> def getFunctions():
>      values = [ 'Black', 'Red', 'Blue' ]
>      return SimpleVocabulary.fromValues(values)
> I thought this would be a good chance to build my vocabulary
> skills. I followed Stephan's book but I am receiving errors such as:
>    File "/Users/djohnson/sandbox/Zope-3.3.0/build/lib.macosx-10.3- 
> fat-2.4/zope/app/form/utility.py", line 64, in _createWidget
>      field = field.bind(context)
>    File "/Users/djohnson/sandbox/Zope-3.3.0/build/lib.macosx-10.3- 
> fat-2.4/zope/schema/_field.py", line 239, in bind
>      assert ISource.providedBy(clone.vocabulary)
> I figured that might be outdated, so I tried copying the "Connection  
> Names" vocabularly but again I get the same errors.
> What am I missing? Where should I look?

I came across this exact same error while playing with vocabularies

Here is a portion of my schema definition:

    myProperty = Choice(title=_(u"A Property"),
                        description=_(u"Testing vocabs."),

The vocabulary using the utility directive (since vocabulary
is deprecated, I believe).


With a function as the component (in myproperty.py):

# Accepting the context argument was important even though
# it is not used in this function.
def getProperties(context):
    return a vocabulary of properties.
    list = ["one", "two"]
    return SimpleVocabulary.fromValues(list)

One trick was to use the provides=IVocabularyFactory line in the
vocabulary's utility directive.  I had other ComponentLookup issues
before I set it to that.

I hope this helps because that assert error is in my logs
and I fixed it but I can't remember exactly what the key
change was at the time.  ;-)


Zope3-users mailing list

Reply via email to