[Zope-dev] Python Based DataSkins and Propertysheets

Steve Alexander steve@cat-box.net
Mon, 12 Feb 2001 11:16:12 +0000


Johan Carlsson wrote:

> 
> Whoooha!
> I added PropertyManager to EmployX and it saves properties?

Is that a question? I'm not sure I can answer that.

> Is this correct?
> - The objects are stored presistently in the Racks storage (BTree).

With the way a rack is set up by default, yes. You just say in the Rack what class it should store.

> - The attributes 

> (and the propertysheet which is a attribute) 

The properties in a propertysheet are stored as attributes.
The propertysheet is a view on an instance's data.

>   are
>   managed by the "PersistentAttributes" attribute provider.

The PersistentInternalAttributeProvider stores the attributes of an instance in a dict in the Rack.

I had a conversation with Phillip Eby on this list a couple of months ago about exactly how
PersistentInternalAttributeProviders and PersistentExternalAttributeProviders work. You should be able
to find the messages in the list archives.

>   (Can I verify this by some kind of inspection?)

You can look through the ZODB from a python interactive prompt, and look inside a Rack's BTree to see how things are laid out.

I think there are some HOT TO documents on looking in the ZODB from the python interactive prompt.

> - If I would create Attribute Providers (with SkinScripts) they
>  could redirect the storage to what ever storage i like.

Yes. You may want to set the Rack up differently, that is, so it doesn't store Dataskins persistently, but accesses them based on an id.
Look at a Rack's tabs.


> Hm, I realize that I'm still very confused and the only way out of that 
> is "doing stuff" and see what happens.

I guess so :-)  There's also reading the source code... which may or may not help clarify things.

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net