Terse Syntax through External Methods

Diez B. Roggisch deets at nospam.web.de
Tue Jan 29 23:50:23 CET 2008

Jens schrieb:
> On Jan 25, 3:19 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
>> Jens schrieb:
>>> Hello Everyone
>>> I'm newbie to Zope and i have a few questions regarding external
>>> methods. What i wan't to do
>>> is provide a terse syntax for converting  urls to special tracking
>>> urls:
>>> <dtml-var "track('http://myurl/')">
>>> turns the provided url into something like
>>> http://host/tracking?url=http%3A%2F%2Fmyurl%2F
>>> in the output.
>>> i've been trying to use a external procedure like this.
>>> ## Script (Python) "track_link"
>>> ##bind container=container
>>> ##bind context=context
>>> ##bind namespace=_
>>> ##bind script=script
>>> ##bind subpath=traverse_subpath
>>> ##parameters=self,url
>>> ##title=track link
>>> ##
>>> return "%s%s" % (self.tracking_prefix, url_quote(url))
>>> This doesn't work because because the method doesn't have access to
>>> the environment. Obviously I don't wan't to pass everything explicitly
>>> into the function as this would defeat the purpose of the exercise,
>>> namely to provide a terse syntax.
>>> I have a background in other languages so I might be missing something
>>> conceptually with regard Zope and DTML.. Is there a better was of
>>> doing this, perhaps without using external methods? Currently im doing
>>> the following which isn't very elegant:
>>> in content document
>>> <a href="<dtml-let exturl="'http://www.mylink.com/"><dtml-var
>>> tracking></dtml-let>">link</a>
>>> ...
>>> tracking:
>>> <dtml-var tracking_prefix><dtml-var name="exturl" url_quote_plus>
>>> Appreciate any input you might have on this-
>> Is it really needed to use an external method for this, or isn't a
>> "normal" python script enough already?
>> If it has to be an External method, you can't access such a context
>> AFAIK. But then you can create a python script that _has_ this context,
>> and passese it to the external method. Not the nicest solution, but
>> should work.
>> Diez
> Like I said i'm a newbie. I though the deal with Zope was that i
> couldn't really do inline scripting (for security reasons)
> like in php but had to use these external methods. how does one go
> about creating a "normal" python script exactly and
> how do I invoke it's functionality?

Read the docs:


There's everything in there you need.


More information about the Python-list mailing list