[Zope-dev] TreeVocabulary in zope.schema.vocabulary
Marius Gedminas
marius at gedmin.as
Tue Jan 24 22:52:36 UTC 2012
On Tue, Jan 24, 2012 at 07:34:03PM +0200, Jan-Carel Brand wrote:
> > Missing tests: by inheriting from SimpleVocabulary you also gain
> > .fromItems() and .fromValues(). Do those work? They pass a list of
> > terms to __init__, which seems to expect a dict now. Override and add a
> > raise NotImplementedError? Or just make them work?
>
> I now subclass PersistentMapping instead of SimpleVocabulary, so this is
> not an issue anymore.
Ok. But why Persistent? None of the other vocabularies are
persistent...
> > What's the use case for a tree vocabulary? A widget that displays the
> > tree structure explicitly?
>
> Yes. In my case, it's for the widget in collective.dynatree. This is a
> fairly common use-case in Plone. Products.ATVocabularyManager also has
> hierarchical vocabularies.
*nod*
> > It seems... difficult to extract that
> > tree structure using just the public API. Actually, it's impossible:
> > __iter__ doesn't return all the terms, just top-level ones. Am I
> > missing something?
>
> I've changed the TreeVocabulary to subclass from PersistentDict. So the
> vocabulary itself now acts as a dict.
So is it PersistentMapping or PersistentDict then? ;)
> > > Perhaps I should rephrase :)
> > >
> > > I would like my changes to be merged with the zope.schema trunk. The
> > > tests I've added provide 100% coverage of the TreeVocabulary code.
> > >
> > > I would just like someone to sign it off.
> >
> > -1 because of the concerns above.
>
> Fair enough. Have your concerns been addressed properly?
Thank you, yes.
I'm still wondering about the possibility of ordered trees.
And I'm -1 for subclassing PersistentMapping. It may tempt people into
storing tree vocabularies in the ZODB, and then maybe even modifying
them. And you have plenty of non-persistent dicts in the internal
structure.
I think it would be better to subclass a regular dict, and document that
you ITreeVocabulary is a dict-like object by making it inherit
IEnumerableMapping.
Regards,
Marius Gedminas
--
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mail.zope.org/pipermail/zope-dev/attachments/20120125/226a1b37/attachment.sig>
More information about the Zope-Dev
mailing list