Creating and using vocabularies in Zope 3
def getActivityPhaseVocabulary(context):
catalog = getUtility(ICatalog)
items = catalog.searchResults(portal_type=("ActivityPhase", "ActivityPhase"))
return SimpleVocabulary.fromValues([item.title for item in items])
<utility name="coursebuilder.activity.phases"
component=".vocabulary.getActivityPhaseVocabulary"
provides="zope.schema.interfaces.IVocabularyFactory" />
More useful zcml
<utility name="coursebuilder.activity.phases"
factory=".vocabulary.getActivityPhaseVocabulary" />
Then, the IVocabularyFactory interface is assumed, and you can also use:
def getActivityPhaseVocabulary(context,**kwargs):
in your function definition, and add any parameters you want in the zcml:
<utility name="coursebuilder.activity.phases"
factory=".vocabulary.getActivityPhaseVocabulary"
firstParm="this"
secondParm="that"
/>