[Zope-dev] SkinScript enhancement
Steve Alexander
steve@cat-box.net
Sun, 14 Jan 2001 13:42:25 +0000
While debugging some dependencies in some of my SkinScript, I had an idea.
SkinScript could be extended so that COMPUTE statements can have a
RECOMPUTE FOR clause. This clause would tell a dataskin to invalidate
its cache for the attributes in the COMPUTE statement if any of the
attributes in the RECOMPUTE FOR clause changed.
So,
WITH QUERY some_method(primary_key=ms_vars_id) COMPUTE
foo,bar,baz
OTHERWISE LET
foo='no foo',
bar='no bar',
baz='no baz'
RECOMPUTE FOR
ms_vars_id
This is equivalent to the above statement, without the RECOMPUTE FOR
clause, followed by a trigger:
WHEN OBJECT ADDED, CHANGED CALL
HAS_CHANGED('ms_vars_id')
and self._uncache_attrs(['foo', 'bar', 'baz'])
This assumes a method of DataSkins.DataSkin _uncache_attrs:
def _uncache_attrs(self, names):
v=self._v_attrCache
for name in names:
del v[name]
I haven't tested any of this yet.
--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net