[Zope] Embedding absolute_url in TAL Syntax
Dan Shafer
pydan@danshafer.com
Fri, 07 Jun 2002 00:03:50 -0700
--Boundary_(ID_64DcGN78hiV7ZAoiBW+t7w)
Content-type: text/plain; charset=us-ascii; format=flowed
Content-transfer-encoding: 7BIT
At 08:54 AM 6/7/2002 +0200, Robert Rottermann wrote:
>Somehow I do not believe you.
>In your case it aoumts to about the same code.
>Mabe I do not understand your problem really.
>Why donty you send me a dtml-code snippet where your problem is saved the
>dtml-way.
OK. Here's the pure-DTML approach:
<table>
<tr>
<th>Title</th><th>Summary</th>
</tr>
<dtml-in objectValues>
<tr>
<td><dtml-var title></td>
<td><dtml-var Summary></td>
</tr>
</dtml-in>
</table>
Now here's the DTML approach where I'm using a Python script to retrieve
the records and then feeding them to the page:
<table>
<tr>
<th>Title</th><th>Summary</th>
</tr>
<dtml-in expr="ListAllArticles()">
<tr>
<td><a href="<dtml-var absolute_url>"><dtml-var title></a> </td>
<td><dtml-var Summary></td>
</tr>
</dtml-in>
</table>
Note that I added the URL stuff here, but including it in the earlier
example would also be trivial.
What I ended up with in TAL is pretty clean as well. It is simply that
while absolute_url is a dtml-var that gets picked up without any extra
effort on my part, when I go to TAL and want to use a Python script, as I
understand it, I have to stuff the results into a Python list or dictionary
to make them work with TAL. So I "lose contact" with the object, as it
were, which means I have to grab any information I want about the object
*before* I pass to the TAL processing.
My comment about it being more obtuse was based not on what I eventually
got working but on the code snippets you were sending, which I had a hard
time following, probably because of my relative inexperience.
>Robert
>----- Original Message -----
>From: "Dan Shafer" <pydan@danshafer.com>
>To: "Robert Rottermann" <robert@redcor.ch>
>Cc: <zope@zope.org>
>Sent: Friday, June 07, 2002 8:44 AM
>Subject: Re: [Zope] Embedding absolute_url in TAL Syntax
>
>
> > Thanks, Robert. I'll study these snippets and see if I can make the
> > technique work.
> >
> > Boy, it sure seems that this ZPT/TAL stuff, far from simplifying the
> > perceived complexity of DTML, is making things *much* more difficult and
> > obtuse. The same code using DTML is quite straight-forward.
> >
> > At 07:35 AM 6/7/2002 +0200, Robert Rottermann wrote:
> > >That probably means, that your item does not have an absolute_url method.
> > > >From the name of ListAllArticlesDict I assume it is a dictonary. Then
>of
> > >course the items do not have an absolute_url.
> > >Hovever you could get at the "real" object and then use its absolute_url
> > >like so:
> > >
> > ><a tal:define="obj python:getattr(here, item['id'])"
> > > tal:attributes="href obj/absolute_url"
> > > tal:content="item/title">
> > ></a>
> > >I assume your dictionary has an entry 'id' with the objects id.
> > >
> > >Here is a codesnippet I copied verbatim from one of my scripts that uses
> > >absolute_url:
> > ><span tal:define="vlist request/vlist | options/vlist | python:[''] *
> > >here.getNoOfArtikels()"
> > > tal:omit-tag=""
> > > tal:repeat="artikel python:here.objectValues('Photo')">
> > > <tr>
> > > <td width="100" rowspan="2" valign="top">
> > > <img alt="bild" style="margin-right:10"
> > > tal:condition="python:artikel.size() > 0"
> > > tal:attributes="src python:'%s?display=thumbnail' %
> > >artikel.absolute_url()">
> > > </td>
> > >Robert
> > >----- Original Message -----
> > >From: "Dan Shafer" <pydan@danshafer.com>
> > >To: "Robert Rottermann" <robert@redcor.ch>
> > >Cc: "Dan Shafer" <pydan@danshafer.com>; <zope@zope.org>
> > >Sent: Friday, June 07, 2002 2:34 AM
> > >Subject: Re: [Zope] Embedding absolute_url in TAL Syntax
> > >
> > >
> > > > Thanks, Robert. But that produces a runtime Zope error:
> > > >
> > > > Error Type: Undefined
> > > > Error Value: "absolute_url" not found in "item/absolute_url"
> > > >
> > > > For completeness, here's the entire relevant snippet:
> > > >
> > > > <tbody tal:repeat="item here/ListAllArticlesDict">
> > > > <tr>
> > > > <td>
> > > > <a tal:attributes="href item/absolute_url"
> > > > tal:content="item/title"></a></td>
> > > > <td tal:content="item/Summary">Summary</td>
> > > > </tr>
> > > > </tbody>
> > > >
> > > > We know that the first line produces the items because if I don't try
>to
> > >do
> > > > the URL, the table displays as expected.
> > > >
> > > > At 11:45 PM 6/6/2002 +0200, Robert Rottermann wrote:
> > > > >In this case you must use tal:attributes
> > > > ><a tal:attributes="href item/absolute_url"
>tal:content="item/title"></a>
> > > > >Robert
> > > > >----- Original Message -----
> > > > >From: "Dan Shafer" <pydan@danshafer.com>
> > > > >To: <zope@zope.org>
> > > > >Sent: Thursday, June 06, 2002 9:48 PM
> > > > >Subject: [Zope] Embedding absolute_url in TAL Syntax
> > > > >
> > > > >
> > > > > > OK, now that I have my table of objects produced by a Python
>script
> > > > >working
> > > > > > in ZPT, I need to figure out how to connect an entry in the table
>to
> > >its
> > > > > > URL. What is the TAL equivalent of:
> > > > > >
> > > > > > <td><a href="<dtml-var absolute_url>"><dtml-var title></a></td>
> > > > > >
> > > > > > It *seemed* like I should be able to code:
> > > > > >
> > > > > > <td><a
> > > > > >
> >
> >href="tal:content='item/absolute_url'"><tal:content="item/title"></a></td>
> > > > > >
> > > > > > But that creates a compilation error in the TAL HTML Parser. Maybe
> > >it's a
> > > > > > quoting thing (which I had sort of hoped would be cleaner in ZPT
>than
> > >it
> > > > >is
> > > > > > with DTML stuff) but I can't find anything in the docs about using
> > > > > > absolute_url in TAL, so I'm kinda stuck.
> > > > > >
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > 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 )
> > > > > >
> > > >
> > > >
> >
> > Dan Shafer, Chief Scribe and Tablet Keeper
> > PythonCard Open Source Project
> > http://pythoncard.sourceforge.net
> >
> >
Dan Shafer, Chief Scribe and Tablet Keeper
PythonCard Open Source Project
http://pythoncard.sourceforge.net
--Boundary_(ID_64DcGN78hiV7ZAoiBW+t7w)
Content-type: text/html; charset=us-ascii
Content-transfer-encoding: 7BIT
<html>
At 08:54 AM 6/7/2002 +0200, Robert Rottermann wrote:<br>
<blockquote type=cite class=cite cite>Somehow I do not believe
you.<br>
In your case it aoumts to about the same code.<br>
Mabe I do not understand your problem really.<br>
Why donty you send me a dtml-code snippet where your problem is saved
the<br>
dtml-way.</blockquote><br>
OK. Here's the pure-DTML approach:<br><br>
<font face="Times New Roman, Times"><table><br>
<tr><br>
<th>Title</th><th>Summary</th><br>
</tr><br>
<dtml-in objectValues><br>
<tr><br>
<td><dtml-var title></td><br>
<td><dtml-var Summary></td><br>
</tr><br>
</dtml-in><br>
</table><br><br>
</font>Now here's the DTML approach where I'm using a Python script to
retrieve the records and then feeding them to the page:<br><br>
<font face="Times New Roman, Times"><table><br>
<tr><br>
<th>Title</th><th>Summary</th><br>
</tr><br>
<dtml-in expr="ListAllArticles()"><br>
<tr><br>
<td><a href="<dtml-var
absolute_url>"><dtml-var title></a>
</td><br>
<td><dtml-var Summary></td><br>
</tr><br>
</dtml-in><br>
</table><br><br>
</font>Note that I added the URL stuff here, but including it in the
earlier example would also be trivial.<br><br>
What I ended up with in TAL is pretty clean as well. It is simply that
while absolute_url is a dtml-var that gets picked up without any extra
effort on my part, when I go to TAL and want to use a Python script, as I
understand it, I have to stuff the results into a Python list or
dictionary to make them work with TAL. So I "lose contact" with
the object, as it were, which means I have to grab any information I want
about the object *before* I pass to the TAL processing.<br><br>
My comment about it being more obtuse was based not on what I eventually
got working but on the code snippets you were sending, which I had a hard
time following, probably because of my relative inexperience.<br><br>
<blockquote type=cite class=cite cite>Robert<br>
----- Original Message -----<br>
From: "Dan Shafer" <pydan@danshafer.com><br>
To: "Robert Rottermann" <robert@redcor.ch><br>
Cc: <zope@zope.org><br>
Sent: Friday, June 07, 2002 8:44 AM<br>
Subject: Re: [Zope] Embedding absolute_url in TAL Syntax<br><br>
<br>
> Thanks, Robert. I'll study these snippets and see if I can make
the<br>
> technique work.<br>
><br>
> Boy, it sure seems that this ZPT/TAL stuff, far from simplifying
the<br>
> perceived complexity of DTML, is making things *much* more difficult
and<br>
> obtuse. The same code using DTML is quite straight-forward.<br>
><br>
> At 07:35 AM 6/7/2002 +0200, Robert Rottermann wrote:<br>
> >That probably means, that your item does not have an
absolute_url method.<br>
> > >From the name of ListAllArticlesDict I assume it is a
dictonary. Then<br>
of<br>
> >course the items do not have an absolute_url.<br>
> >Hovever you could get at the "real" object and then
use its absolute_url<br>
> >like so:<br>
> ><br>
> ><a tal:define="obj python:getattr(here,
item['id'])"<br>
> > tal:attributes="href
obj/absolute_url"<br>
> >
tal:content="item/title"><br>
> ></a><br>
> >I assume your dictionary has an entry 'id' with the objects
id.<br>
> ><br>
> >Here is a codesnippet I copied verbatim from one of my scripts
that uses<br>
> >absolute_url:<br>
> ><span tal:define="vlist request/vlist | options/vlist |
python:[''] *<br>
> >here.getNoOfArtikels()"<br>
> > tal:omit-tag=""<br>
> > tal:repeat="artikel
python:here.objectValues('Photo')"><br>
> > <tr><br>
> > <td
width="100" rowspan="2"
valign="top"><br>
>
>
<img alt="bild" style="margin-right:10"<br>
>
>
tal:condition="python:artikel.size() &gt; 0"<br>
>
>
tal:attributes="src python:'%s?display=thumbnail' %<br>
> >artikel.absolute_url()"><br>
> >
</td><br>
> >Robert<br>
> >----- Original Message -----<br>
> >From: "Dan Shafer" <pydan@danshafer.com><br>
> >To: "Robert Rottermann" <robert@redcor.ch><br>
> >Cc: "Dan Shafer" <pydan@danshafer.com>;
<zope@zope.org><br>
> >Sent: Friday, June 07, 2002 2:34 AM<br>
> >Subject: Re: [Zope] Embedding absolute_url in TAL Syntax<br>
> ><br>
> ><br>
> > > Thanks, Robert. But that produces a runtime Zope
error:<br>
> > ><br>
> > > Error Type: Undefined<br>
> > > Error Value: "absolute_url" not found in
"item/absolute_url"<br>
> > ><br>
> > > For completeness, here's the entire relevant
snippet:<br>
> > ><br>
> > >
<tbody tal:repeat="item here/ListAllArticlesDict"><br>
> > >
<tr><br>
> >
>
<td><br>
> >
>
<a tal:attributes="href item/absolute_url"<br>
> >
>
tal:content="item/title"></a></td><br>
> >
>
<td tal:content="item/Summary">Summary</td><br>
> > >
</tr><br>
> > >
</tbody><br>
> > ><br>
> > > We know that the first line produces the items because if
I don't try<br>
to<br>
> >do<br>
> > > the URL, the table displays as expected.<br>
> > ><br>
> > > At 11:45 PM 6/6/2002 +0200, Robert Rottermann wrote:<br>
> > > >In this case you must use tal:attributes<br>
> > > ><a tal:attributes="href
item/absolute_url"<br>
tal:content="item/title"></a><br>
> > > >Robert<br>
> > > >----- Original Message -----<br>
> > > >From: "Dan Shafer"
<pydan@danshafer.com><br>
> > > >To: <zope@zope.org><br>
> > > >Sent: Thursday, June 06, 2002 9:48 PM<br>
> > > >Subject: [Zope] Embedding absolute_url in TAL
Syntax<br>
> > > ><br>
> > > ><br>
> > > > > OK, now that I have my table of objects produced
by a Python<br>
script<br>
> > > >working<br>
> > > > > in ZPT, I need to figure out how to connect an
entry in the table<br>
to<br>
> >its<br>
> > > > > URL. What is the TAL equivalent of:<br>
> > > > ><br>
> > > > > <td><a href="<dtml-var
absolute_url>"><dtml-var
title></a></td><br>
> > > > ><br>
> > > > > It *seemed* like I should be able to code:<br>
> > > > ><br>
> > > > > <td><a<br>
> > > > ><br>
><br>
>href="tal:content='item/absolute_url'"><tal:content="item/title"></a></td><br>
> > > > ><br>
> > > > > But that creates a compilation error in the TAL
HTML Parser. Maybe<br>
> >it's a<br>
> > > > > quoting thing (which I had sort of hoped would
be cleaner in ZPT<br>
than<br>
> >it<br>
> > > >is<br>
> > > > > with DTML stuff) but I can't find anything in
the docs about using<br>
> > > > > absolute_url in TAL, so I'm kinda stuck.<br>
> > > > ><br>
> > > > ><br>
> > > > ><br>
> > > > >
_______________________________________________<br>
> > > > > Zope maillist - Zope@zope.org<br>
> > > > >
<a href="http://lists.zope.org/mailman/listinfo/zope" eudora="autourl">http://lists.zope.org/mailman/listinfo/zope</a><br>
> > > > > ** No cross posts or HTML
encoding! **<br>
> > > > > (Related lists -<br>
> > > > >
<a href="http://lists.zope.org/mailman/listinfo/zope-announce" eudora="autourl">http://lists.zope.org/mailman/listinfo/zope-announce</a><br>
> > > > >
<a href="http://lists.zope.org/mailman/listinfo/zope-dev" eudora="autourl">http://lists.zope.org/mailman/listinfo/zope-dev</a>
)<br>
> > > > ><br>
> > ><br>
> > ><br>
><br>
> Dan Shafer, Chief Scribe and Tablet Keeper<br>
> PythonCard Open Source Project<br>
> <a href="http://pythoncard.sourceforge.net/" eudora="autourl">http://pythoncard.sourceforge.net</a><br>
><br>
></blockquote>
<x-sigsep><p></x-sigsep>
Dan Shafer, Chief Scribe and Tablet Keeper<br>
PythonCard Open Source Project<br>
<a href="http://pythoncard.sourceforge.net/" eudora="autourl">http://pythoncard.sourceforge.net<br>
</a></html>
--Boundary_(ID_64DcGN78hiV7ZAoiBW+t7w)--