Hi Philipp

[...]
> 
> [EMAIL PROTECTED] wrote:
> >> I'm working on removing BBB warnings of our current app for 3.3.
> >> For the <vocabulay> directive it was possible to give the factory 
> >> some parameters like this:
> >>
> >> <vocabulary
> >>       name="doctype"
> >>       factory="..vocab.ContainerVocabulary"
> >>       containerName="doctype" />
> >>
> >> Now, with the <utility> directive that's not possible.
> > 
> > Write a own factory like:
> > 
> > class DocTypeContainerVocabulary(ContainerVocabulary):
> > 
> >   def __init__(self):
> >     super(DocTypeContainerVocabulary, self).__init__()
> >     self.containerName = 'doctype'
> > 
> > and also you have to *patch* your class with :
> > 
> > classProvides(DocTypeContainerVocabulary, IVocabularyFactory)
> 
> This is unnecessarily complicated. Simply do:
> 
> class DocTypeContainerVocabulary(ContainerVocabulary):
>     containerName = 'doctype'
>     zope.interface.classProvides(IVocabularyFactory)

right, that's simpler than my sample.

> Btw, the "classProvides" thing isn't "patching". Not sure 
> what you mean, Roger, but it looks like you wanted to give 
> this a negative connotation.

Ok, sorry that wasn't the target of the word *patching*. 
But sure I'm not really happy with the additional python 
code where we have to write and it smells to me like a
monky patch pattern if use classProvides outside of the 
class definition.
Your example is much better in this part.

Regards
Roger Ineichen

_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to