But as I noticed the "properties" was saved as attributes not as properties in a propertysheet.
That's another way of doing it. It is a bit less transparent. I find it more straightforward to make my classes SimpleItems and PropertyManagers, as it means I can just call manage_changeProperties() without writing extra methods.
Ah, I see. But why do I need SimpleItems, isn't PropertyManagers sufficient?
There are two kinds of PropertySheet in Zope: DAV propertysheets Propertysheets that go with ZClasses
There are also Properties for objects that are PropertyManagers, such as DTML Documents.
There is an important difference in how these different types of properties work:
DAV Propertysheets are independent Persistent objects
Propertysheets that go with ZClasses and also PropertyManager propertysheets are stored as attributes in the objects they belong to.
Therefore, in ZPatterns, you use AttributeProviders to do stuff with PropertyManager properties and ZClass-style propertysheets.
You use SheetProviders to do stuff with DAV Propertysheets.
If you're using ZClass-style propertysheets, you need to use DataSkin Attribute Propertysheets, rather than the default Common Instance Propertysheets.
In your case, I suggest making your class Persistent, and using PropertyManager properties.
But making it presistent doesn't that lock the objects to be stored in the ZODB? I may want to change storage to SQL later.
The reason to use ZClass-style propertysheets is if you want to easily partition your properties into sets of properties with different permissions.
Still confused but on a higher level ;-) Johan