Release Notes

 Note: Zope 2.3.2 or better is required for this and any subsequent releases
 of ZPatterns.

 Changes in 0.4.3 patch 2 Release

  * Fixed the manage_pack fix  :(

  * Added code to support Zope's deprecation of the 'id' attribute in favor
    of '_getId()' and '_setId()' methods.

 Changes in 0.4.3 patch 1 Release

  * Fixed a stupid typo in Rack.py that caused manage_pack to delete data

  * Added experimental support for Zope 2.4 (expr_globals fix)

 Changes in 0.4.3 Release

  * Updated management UI's to fit Zope 2.3 look-and-feel

  * Added support for Zope 2.3's new BTree format in Rack objects.  To convert
    existing racks, just use the manage_pack method (available from the button
    at the bottom of the "Storage" tab).

  * Fixed manage_pack not deleting all the items it should (due to modifying
    a btreeitems list in place).

  * Added an optional 'DEPENDENT ON' clause to 'WITH ... COMPUTE' statements
    that makes the computed variables subject to recalculation if any of the
    'DEPENDENT ON' attributes are directly changed.  Specifically, if an
    attribute listed in the 'DEPENDENT ON' clause is set (by assignment or
    'setattr()'), then the other attributes in the statement will be dropped
    from the DataSkin's attribute cache, causing them to be recalculated the
    next time one of them is queried.

  * Fixed misc. security compatibility issues for Zope 2.3.x
    

 Bug Fixes in 0.4.3b2

  * Fixed "name" objects (shortcuts in SkinScript and elsewhere) being broken
    when I updated internal docs for the b1 release.  :(

 IMPORTANT NOTES FOR 0.4.3b1

  * The Transactions.Transactional and Transactions.TransientMapping classes are
    now DEPRECATED.  Use at your own risk, because they never worked 100% right
    in the first place, and ZPatterns no longer uses them.  They are left in as
    a courtesy for the moment, but will disappear in 0.5.0.

  * GenericAttributeProviders and GenericTriggers are now deprecated in favor of
    SkinScript Methods, and the ability to create them has been disabled.  Please
    convert your existing ones over at your earliest convenience, since they will
    disappear altogether in 0.5.0

 New Features in 0.4.3b1

  * ZClass support for PlugIns!  Now you can create ZClass subclasses of PlugIns
    and PlugInContainers, if their Python base classes are properly declared.

  * DataSkin Class Extenders.  Class extenders let you add any Zope objects you
    like to a DataSkin, just by adding them on the extender's Methods tab.  You
    can set permission mappings on the methods, just like in a ZClass.  This lets
    you add methods to a DataSkin without actually altering its class.  Note that
    you cannot override existing methods, unless the DataSkin class defined those
    methods as "class_default_for_foo" methods.

 Bug Fixes/Minor Enhancements in 0.4.3b1

  - The PlugIns is package is now a seperate product and can be used independently
    of the rest of ZPatterns.

  - Full subtransaction support.  Subtransactions can be committed or aborted,
    and only the correct things will be committed/rolled back.  Note, however,
    that anything called by your triggers must have Zope transaction support
    for this to work.  Right now, that probably means only ZODB and SQL data
    is properly handled, and we've only done subtransaction testing with SQL
    to date.

  - Many new SkinScript clauses simplify common tasks such as processing an SQL
    method result, providing default values if a record is not found, initializing
    a newly created object, and so on.  See the SkinScript documentation for details.


 Upgrading from pre-0.4.x Versions

  - It would be a good idea to do a "refresh" on at least one diagnostic screen
    on the "Data PlugIns" tab of each DataManager derivative (Rack, Specialist,
    LoginManager, UserSource, etc.) that is in an existing site.
    'DataManager.__setstate__()' automatically upgrades from the old provider
    registries, but we would like to get rid of this code in future releases,
    so please update your objects by either refreshing a diagnostic screen on
    them or by editing them in some way.

  - Please get rid of any references to RackMountable, including ZClasses based
    on it.  RackMountable only exists for backward compatibility - it's going
    to be history in 0.5.0.  Derive from ZPatterns.DataSkins.DataSkin instead.

  - Acquired Attribute Providers and Acquired Sheet Providers are disappearing
    in favor of "Link to parent Data plug-ins", which has the features of both
    and makes parent triggers active as well.  0.4.0 removes the ability to
    create them; please migrate your existing ones, as in 0.5.0 the classes
    will disappear.

