[Zope-dev] 0.4.0 alpha 1 Released

Phillip J. Eby pje@telecommunity.com
Fri, 16 Jun 2000 22:35:52 -0500


ZPatterns 0.4.0 alpha 1 has been uploaded to zope.org.  No new docs, but
README, TODO, and CHANGES have been updated since last week's snapshot.
This is now in more or less stable form for this revision cycle; it's
labelled alpha mainly because regression testing has been minimal.

Some highlights of additions since the snapshot:

* DataSkins now work for everything but cut/paste (and that should work
under Zope 2.2, although I haven't verified it yet).  They do work for
copy/paste, and you can make a Folder DataSkin just by blending the two
classes in a ZClass w/no additional work.

* Generic Triggers have been added.  They let you call an arbitrary Python
expression (using DTML's safe eval) at transaction commit time in response
to an object being added, changed, or deleted.  In the expression
namespace, you have a CHANGED_ATTRS() function you can call for a list of
attributes set or deleted during the transaction, and a CHANGED('varname')
function you can use to verify whether a particular attribute was
changed/deleted.  Generic triggers will also save the "before" values of
arbitrary expressions on the object from "before" it changed or was
deleted, and provides these before values as attributes of an object called
"OLD".

Generic triggers have only been lightly tested, but if they work correctly,
they should let you do things such as catalog items in a ZCatalog without
subclassing CatalogAware and without blindly using the recatalog function.
You can also specify that certain attributes will be handled by the
trigger, in which case any set/delete operations will be cached, and the
trigger can access the new values from the object at
transaction/subtransaction commit time, and do whatever's necessary to save
those values in SQL, LDAP, or another system of your choosing.


* Runtime extensibility - DataSkins look for a class_default_for_x
attribute when they don't have an attribute "x" available from their
Providers.  This allows you to define default implementations of methods,
for example, and override them with a Customizer.  This really needs a
ClassExtender AttributeProvider to be really useful, but you could get by
with a Generic Attribute Provider if you had to.

These are probably the main new features of interest in 0.4.0, which is now
feature-complete in its framework.  Next on my list are more plugins (such
as ClassExtender), a SkinScript/ASL compiler, and of course, more docs.

Future ZPatterns releases will soon be switched to Zope 2.2 as a
development system, as the new help system, transactions, path traversal,
security API, and other features are very compelling for continued
advancements in ZPatterns.  (Not to mention that trying to write code that
works on both 2.2 and 2.1.x is a royal pain.)  Last, but not least, I hope
that Jim's new persistent __get/set/delattr__ method support will let me
ditch DynPersist.c and let people using binary installs avoid having to
compile something special to run ZPatterns.

If you're using any previous version of ZPatterns, please check the CHANGES
file in this release for notes on compatibility with future versions.  I
had to use a __setstate__ hack in this release to upgrade older data
structures, and certain classes are going to be phased out.  I am satisfied
at this point, however, with the overall structure of ZPatterns, and should
be able to avoid any further upheavals.  (Crossing fingers.)  Please also
see the TODO file for known issues relating to current limitations of the
fancy new features, especially on Zope 2.1.x.

0.4.0 will probably have some minor numbering upgrades as I add plugins,
docs, and SkinScript.  The next big upgrade after that will be work for the
0.5.0 series - indexing, searching, joining result sets across disparate
data sources, that sort of thing.  I haven't even begun that yet, so no
promises on what capabilities will actually result, or when they will
materialize.  As far as I'm concerned, the 0.4.0 series is complete enough
to build useful applications on, and I plan for my team to start doing that
ASAP.  In the process, we'll probably find and fix bugs, but it will help
if I can get any bug reports y'all might have from playing with it.

Ty should be releasing a LoginManager 0.8.7 patch release soon to address
compatibility with 0.4.0.  There are only a few minor changes needed, one
having to do with the way LoginManager gets some of its tabs from
Specialist, and two changes for RackMountable->DataSkin compatibility.
They've been done, but not yet tested or packaged for release.