Terse Syntax through External Methods

aggergren at gmail.com aggergren at gmail.com
Mon Feb 4 10:39:08 EST 2008


On Jan 29, 11:50 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> Jens schrieb:
>
>
>
> > On Jan 25, 3:19 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> >> Jens schrieb:
>
> >>> Hello Everyone
> >>> I'm newbie toZopeand 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 regardZopeand 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 withZopewas 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:
>
> http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/Scripting...
>
> There's everything in there you need.
>
> Diez

Thanks, this is exactly what i needed. And Btw. the answer is to use
the 'context' keyword.

- Jens

P.S. And thanks to everyone else for their feedback :-)



More information about the Python-list mailing list