Skip to main content

A central pluggable vocabulary library for use within Plone.

Project description

ATVocabularyManager: a vocabulary managing portal tool for Plone


  • ATVocabularyManager offers central through the Plone management of dynamic vocabularies.

  • This product is based on Archetypes and made to work with Archetypes as well as with other Products. It is intended use is within Archetypes Fields. Using it as a vocabulary provider for CMFMetadata worked out fine too. Integration with different other products will work as well.

  • to use a managed vocabulary simply add the term vocabulary = NamedVocabulary("myvocabulary") to the fields of your Archetypes Schema, import NamedVocabulary from this Product and create your vocabulary with id myvocabulary in ‘portal_vocabularies’ tool (available through Plone Site-Setup).

  • ATVocabularyManager supports:

    simple flat key

    value vocabularies,

    tree like

    hierachical vocabularies (see Limitations),

    IMS Vocabulary Definition Exchange Format (VDEX) aware vocabularies

    with XML Import and Export. VDEX is i18n-aware by its nature and does not need LinguaPlone!

    Vocabularies are pluggable types.

    ATVocabularyManager is prepared for extension with your special vocabulary type. ArchGenXML will help you here. Each vocabulary term needs to be an CMF aware content type. Reuse normal rich content as a vocabularies.

ArchGenXML 1.4+ code-generator does full integration of ATVocabularyManager: via tagged value defined named vocabularies are registered transparently, VDEX-XML files are imported at install-time, stub vocabularies are created at install time and custom types are registered by just providing appropriate stereotypes.

ATVM is Linguaplone compatible (only tested with SimpleVocabulary, and TreeVocabulary). Add a simple vocabulary with some items, install and configure Linguaplone, translate the vocabulary to the language(s) of your choice, translate every item to the language(s) of your choice. NamedVocabulary() will return the vocabulary as usual, the keys will stay the same disregarding language settings, the values will show in the currently selected language. VDEX vocabularies are not using LinguaPlone, but are i18n-aware (imo much better than everything else).

You can do hierachy-aware searches on treevocabularies (for more information on this see doc/search_treevocabulary.txt) attention: curently certain changes in the term hierachy require a catalog rebuild (see Limitations).


Put the egg in your buildout or include it manual. In Plone go to portal_setup and

To speed up ATVocabularyManager you might want to associate it with a Cache-Manager.


  • Archetypes 1.5.x

  • Targets with Plone 3.1+

  • imsvdex (usally it get fetched automatically as dependency, otherwise easy_install imsvdex - )

  • Linguaplone (optional: for tests and multilingual vocabularies)


If you’re using a buildout run the tests using

bin/instance test -s Products.ATVocabularyManager

To run a certain testmodule run

bin/instance test -s Products.ATVocabularyManager -m testSimpleVocabulary


  • UI work


TreeVocabulary catalog updates

If you are using the hierachy-aware catalog search support of tree-vocabularies you need to rebuild the uid_catalog and portal_catalog if you move a vocabularyterm that has other terms below it.

Creation/Edit of VDEX TTW is difficult.

Take an editor of your choice, create the vocab and upload it or help writing an UI.

Known Bugs

  • UI does not show in all cases vocabulary/items properly.

Feel free to add bugs in here!


Usally the authors are offering professional support. The classical well-working community support is found at the mailing-lists and IRC-channels announced at


Several parts code was created for the ZUCCARO project. ZUCCARO (Zope-based Universally Configurable Classes for Academic Research Online) is a database framework for the Humanities developed by the Bibliotheca Hertziana, Max Planck Institute for Art History For further information: “”:


History for Products.ATVocabularyManager



2011-02-18 1.6.0a2

  • changed method of dermining if LinguaPlone is installed. Asking QI does not work in Plone4 [naro]

  • added some missing dependencies, and a new extra section to This helps to get a simple buildout cfg for testing against plone4 [do3cc]

  • added some sleeps between installs in the tests, else genericsetup creates ids twice, and fails [do3cc]

  • temporary deactivated two checks in the tests. With Products.CMFQuickInstaller>=3.0.3, the portal_vocabularies don’t get deleted during uninstall [do3cc]

  • restructured test setup, since call semantics changed [do3cc]

2010-07-16 1.6.0a1

  • Fixed deprecated API call to registerType without Package Name. Works now for Plone4. [2010-01-15, thet]

  • Added Products.LinguaPlone as test dependency to extras_require and begun fixing tests. [2010-01-15, thet]

  • removed old slow VDEX implementation; added stub for import/export of vocabs with generixsetup; added support for vdex import with genericsetup. [2008-07-22, jensens]

2008-06-04 1.4.2

before 1.4

2007-10-30 jensens <jens at bluedynamics (dot) com>

  • workaround for #46 Upload from Windows/IE creates wrong ID

  • made new VdexFileVocabulary as default for upload form

2007-10-15 jensens <jens at bluedynamics (dot) com>

  • add alternative vdex vocabulary, much faster

2007-08-24 jensens <jens at bluedynamics (dot) com>

  • added convinience method to vocabulary library (tool) which returns a dictionary with key=vocbaulary id and value=title of vocabulary (language aware.

2007-08-22 jensens <jens at bluedynamics (dot) com>

  • added convinience function to make it easier to fetch a value from a vocabulary dictionary (utils.vocabs.fetchValueByKeyFromVocabularyDict).

2007-05-24 andrewburkhalter <andrewb at onenw (dot) org>

  • adding css handles to various elements of portal_vocabulary user interface, so that if desired, one can easily dumb down the user interface for less technical clients with css, but not override the template

2007-06-08 jensens <jens at bluedynamics (dot) com>

  • language negotation to make sure the cache is language aware.

2007-03-02 fRiSi <harald at webmeisterei (dot) com>

  • types/simple/

    applied patch of issue #4 (sorting of simple vocabularies)

  • doc/simplevocabulary.txt

    doctest testing the sorting of simplevocabularies sorting might not yet work with translated vocabularies. i added a section to test this, but did not yet write the tests there.

2006-12-23 rocky <rocky at serverzen (dot) com>

  •, configure.zcml,, types/simple/

    • “renamed events” are now fired when the title of any term is updated.

    • “deleted events” are now fired when a term is deleted from a vocabulary; this particular feature will only work when running on Zope 2.9 or higher (note: this doesn’t make ATVM dependent on Zope 2.9)

2006-11-30 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • types/tree/, types/simple/ replaced if not instance is None: with a try-except. if you are on a type that is not linguaplone enabled, and using a vocabulary you got an error when creating an object of this type because getLanguage raised an AttributeError.

2006-11-15 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • types/tree/ to fix in the meantime i solved the problem with the “hack solution” to take away the IVocabulary interface from the term that is extending the vocabulary.

    (see the issue above for more information.)

  • Makefile added a new target clean that removes stale pyc files and *~ backup files

2006-10-23 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • used to not add the keypath of a term if the search for a term uid in uid-catalog returned more than one value. proceeding and just taking the first result is better than silently ignoring the path for this item.

2006-09-11 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • Extensions/

    • did a cleaner check for BadRequest Error in case the tool already existed at install time (also added basic tests for installing/uninstalling/and reinstalling the product.

    • self.portal.portal_properties.navtree_properties.metaTypesNotToList is a tuple by default (on a freshly created plonesite) ATVM creates a list at installation time and removes the tool from this list at uninstallation. If other products get installed between installing and uninstalling, they possibly change metaTypesNotToList back to a tuple again. changed the installer and uninstaller to operate on and return a tuple here. (should fix

  • tests/ tests for the installation and uninstallation of the product. agreed with jens that we could do a zexp of the vocabularies at uninstallation in case this was done by accident. (

2006-08-31 jensens <jens at bluedynamics (dot) com>

  • types/simple/

    • removed bug, which stops me from adding new terms.

2006-08-28 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • types/simple/

    • SimpleVocabularyTerms now return the canoncial’s id as key. This differs from the current behaviour but is essential for translated vocabularies.

    • getTermKeyPath now returns a list containing the key of the term, not it’s uid. This is consistent with the interface.

  • types/simple/, types/tree/ getVocabularyDict now uses instance.getLanguage in favour of portal_lanuages.getPreferredLanguage (otherwhise passing instance would be useless in most cases)

  • tests/ added a test that checks if translations return the same key and if dictionaries are translated.


    • Improved the docstrings to be more explicit.

    • getTermKey now states that all translations of a term have the same key.

    • getTermValue: now has an optional lang parameter making **kwargs needless.

2006-08-21 gotcha <gotcha at bubblenet (dot) be>

  • add sorted simple vocabulary

  • run i18ndude and update fr and nl

2006-08-03 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

2006-07-25 fRiSi <harald (dot) friessnegger at lovelysystems (dot) com>

  • merged current trunk into this branch

  • utils/ utility methods for batch creating vocabularies

  • types/simple/ types/tree/ marked methods getVocabularyValue and getVocabularyKey as deprecated and used those defined in IVocabularyTerm to make terms implement their interface.

  • types/tree/ types/simple/ improved linguaplone support. also added a testcase

  • tests/ testing if treevocabulary is linguaplone aware

  • doc/search_treevocabulary.txt a doctest explaining how ATVM performs searches on hierarchical vocabularies, and how to enable them for your content type.

  • Added dutch translations, thanks to Atopia [jladage]

  • AllowedTypesByIface is broken, it seems - adding manual override to fix this in ATVM. [optilude]

  • removed workflows from ATVM types on installation [ferri]

  • added brazilian portuguese translation and portal_vocabularies title i18n support [ferri]

  • added i18n and Czech translation [naro]

  • uncommented code in to make portal_vocabularylib not show in the navigation tree [panjunyong]

  • use StringWidget instead of IDWidget for Simple vocaublary term [panjunyong]

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Products.ATVocabularyManager-1.6.0a2.tar.gz (65.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page