seb, the scenario you describe seems to introduce dependencies from one template to another that are only satisfied by explicit code in one template. this is one of the places where REQUEST.set is probably the only way. i personally try to avoid dependencies like that, unless the dependency is on data that is available without the author's explicit intervention (e.g. stuff that is available through REQUEST, anyway). that's why i had not even thought about REQUEST.set in that situation. have you thought about refactoring the code to break this dependency? if you have control over python code it is possible to move the test that gives you the variable you want to place into REQUEST into python and make it cheaper to do the test. then you can test in both places and thereby break the dependency. jens On Thursday, November 1, 2001, at 09:02 , seb bacon wrote:
* Jens Vagelpohl <jens@zope.com> [011101 12:44]:
as far as the "REQUEST.set-sledgehammer" goes, most of its uses can be replaced by dtml-let, which has the added advantage that you can look at the code and see where a variable came from much faster than scanning all code for REQUEST.set. maybe it's just me, but i consider REQUEST.set bad style that should be used only if nothing else works.
I dislike the 'set' hammer too, but there's one scenario in which it seems to be unavoidable: if you need to set a variable which must be accessed from several templates. For example, I may have a navigation bar in one template, the colour of which I want to change depending on tests which take place in a content template. Since <dtml-let> can't span more than one template, is there any other way of manipulating a global namespace in the context of a single request?
seb
On Thursday, November 1, 2001, at 02:13 , Anthony Baxter wrote:
Like any site that's been around for a while, we've got a lot of DTML that shouldn't be DTML. We're gradually killing it, but we're looking at detecting stuff that _shouldn't_ be in DTML. One metric that's come up is "any DTML method that has 3 or more calls to REQUEST.set() is probably up to no good."
Have other people found other useful rules of thumb about when to avoid DTML?
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )