[Zope-dev] [RFClet]: What about the request method and the client side trojan?
Toby Dickenson
tdickenson@geminidataloggers.com
Fri, 12 Apr 2002 09:49:19 +0100
On Thursday 11 April 2002 6:37 pm, Jeffrey P Shell wrote:
>On 4/11/02 7:55 AM, "Toby Dickenson" <tdickenson@geminidataloggers.com>
>Then you're lucky. Usually, any time I see <dtml-var
>"someNonIdempotentMethod()">, I immediately change it to the name lookup
>call. Don't blame me, I've been following this paradigm for years (since
>before there were expr's in DTML). I would hate to have to special case
>those methods
OK, that kills the second half of my proposal.
(I still think your style is bizarre though ;-)
> (which I use a lot, usually as accessors, ie:
>
>def Summary(self):
> return self.title + self._description
>).
Aha! maybe not!
That example method definitely is idempotent. Under my proposal it should not
be declared non-idempotent, and would not have restricted dtml-name-lookup
semantics. I agree being able to write <dtml-var Summary> is a good thing
whether Summary is an attribute or method (and not at all bizarre). I agree
that changing this would be disasterous.
Im not sure whether you misunderstood the proposal, or just gave a poor
example to explain why you thought the proposal is bad.....
My proposal only affects method which have been declared to be
non-idempotent. This declaration would only be added to methods that change
externally visible state (in ZODB, Filesystem etc) or have external side
effects (such as sending an email)
Here is a differnet example. Suppose you write a method:
def setEmptyTitle(self):
self.title = '<empty>'
How would you call it from dtml. I think the 'right' answer is that you
generally wouldnt call this method from dtml. From a PythonScript maybe, but
not dtml. However if you did call if from dtml, would you still be using the
name-lookup form, such as:
<dtml-var setEmptyTitle>
or would you use
<dtml-call setEmptyTitle>
<dtml-call "setEmptyTitle()">
<dtml-var "setEmptyTitle()">
?
(Im not going to argue that anyone is 'wrong' to prefer the first form in
this case. Its my *personal* preference that calling non-idempotent methods
using the name-lookup form should be caught and reported as an error.... I am
wondering whether this preference is shared.)