[Zope-dev] Manipulating Meta-Type Global Add list on per-instance basis
Josh Zeidner
jmz_phylogenic@hotmail.com
Tue, 29 Feb 2000 19:01:05 EST
Hmm... possibly I did not explain my needs :
What I need to do is manipulate the attribute of a "folderish" object (
ie. an object that can contain other objects ) that determines what objects
are allowed to be contained by my object. I need to do this at
instantiation time , *NOT* definition time.
I seemed to have accomplished this by manipulating the "meta_types"
attribute... but is this a valid way to attain this behavior?
thanks again- Josh
>
>Josh Zeidner <jmz_phylogenic@hotmail.com> asks:
>
> > I am currently trying to define a Z-Class that inherits from Object
> > Manager that has the special behavior of being able to change its
>"allowable
> > sub-objects" on a per-instance basis.
> >
> > *****************
> >
> > ex.
> >
> > I instantiate the class at a particular location I want this object to
> > only be able to contain objects of type "AppleObject" and
>"OrangeObject".
> >
> > I instantiate the class at another location and I want this object to
>only
> > contain objects of type "LemonObject" and "LimeObject".
> >
> > note that the difference here is that both of the containers are of
>the
> > same type.
> >
> > *************
> >
> > is it possible to have this flexibility after the ZClass has been
>defined?
>
>If you are defining the interface (rather than accepting the default
>"Contents"
>view), then you can do something like::
>
> <select name="toAdd">
> <dtml-in "filtered_meta_types( AUTHENTICATED_USER )" mapping>
> <dtml-if "name in allowed_types">
> <option value="&dtml-name;"> <dtml-var name>
> </dtml-if>
> </dtml-in>
> </select>
>
>where 'allowed_types' is a tokens/lines property of the instance.
>
>Making this happen in the stock management interface is trickier -- you
>need to
>overried either all_meta_types(), but finding the list of possible types,
>so
>that the list you return contains the dictionaries required by
>filtered_meta_types(). I can't see easily off hand how to do this from
>within a
>Python Method -- I think I would have to drop down to an External Method,
>or
>create a new Python base class to implement this.
>
>Tres.
>--
>=========================================================
>Tres Seaver tseaver@palladion.com 713-523-6582
>Palladion Software http://www.palladion.com
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com