[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