maik (dot) jablonski (at) gmail (dot) com
PropertyTools - creating web-databases in a few minutes
PropertyTools are generic content objects to build prototypes for database-applications with the Zope-Management-Interface (ZMI) in just a few minutes.
PropertyTools is intended mainly for use in conjunction with AbracadabraObject. If you got the logic and power behind AbracadabraObject, you will love the PropertyTools.
The main idea behind AbracadabraObject is a simple mechanism to clone pre-configured objects through the Zope-Managemement-Interface (ZMI). With PropertyTools you have specialized objects for building comfortable database-applications with the ZMI in just a few minutes. To get the idea of how to use the PropertyTools & AbracadabraObject, there is a simple demo (FAQ-database) included into this package. Please copy demo.zexp to Zope/import and then import demo.zexp via the ZMI.
After installing you can add one or more PropertyTools-Objects (PropertyObject, PropertyFolder, PropertyFile) to your AbracadabraObject's "standard_object_folder". The main-view of a PropertyTools-Object is a configurable propertysheet, which you can edit & modify & sort to meet your needs. You can simply reorder your properties with the buttons on the right.
Additionally you have a "Manage-Tab". There you can set an "object_type"
for your PropertyToolsObject. All PropertyToolsObjects with the same
object_type can be considered as objects from the same "virtual" class and
can be synchronized in their propertysheets. Additionally the object_type
is used as id for a template which can be a DTML-Method or ZPT and is
used to render your PropertyToolsObject or to identify different kinds of
PropertyObjects in ZCatalogs (index
If you need a form-validation before Zope saves the property values to a PropertyTools-Object you can set up a ValidationManager, which is a PythonScript that is always called in manage_changeProperties and manage_editProperties. The ValidationManager is called after the "original" manage_*Properties-methods, so you can simply test the properties of the current context. You need to raise an exception if you want to break and rollback the current transaction in your PythonScript if the validation fails.
It is also possible to set a traversable path to a WorkflowManager which is simply a PythonScript which is called in the context of the current PropertyToolsObject and should return references to PythonScripts as workflow-actions.
You can save your changes or synchronize the properties and management-values of all PropertyTools-Objects of the same (meta- and) object_type in this folder and below.
Example for building contact-database:
This should give you the main idea behind AbracadabraObject & PropertyTools.
Maybe it is hard to understand what I meant with the PropertyObject. But I promise you: If you ever wanted to create databases with the ZMI, AbracadabraObject und PropertyTools is what you need...
Please feel free to contact me: email@example.com
- added validation-framework. Now each PropertyTool-Object can
be bound to a ValidationManager (a traversable PythonScript), which
can throw exceptions, if you don't like the values submitted by the