[Zope] Help with calcualtions in DTML

Kapil Thangavelu kthangavelu@earthlink.net
Sun, 03 Sep 2000 22:23:44 -0700

"Dario Lopez-Kästen" wrote:
> Hello!
> I have the following listing of objects in my folder:
> <table>
>   <tr>
>     <td><p><b>Name</b></p></td>
>     <td align="right"><p><b>Size</b></p></td>
>     <td align="right"><p><b>date</b></p></td>
>   </tr>
> <dtml-in expr="doc.objectValues()">
>   <tr>
>     <td>
>       <p><a href="<dtml-var absolute_url>"><dtml-var id></a></p>
>     </td>
>     <td align="right">
>       <p><dtml-var get_size> bytes</p>
>     </td>
>     <td align="right">
>       <p><dtml-var bobobase_modification_time fmt="%Y-%m-%d %H:%M"></p>
>     </td>
>   </tr>
> </dtml-in>
> </table>

you might want to grab a copy of the ZQR which goes through most of the
zope's methods and syntax.


get size in kbs assuming its an int

<dtml-var "get_size/1000">

this should do the formatting (tested)

<dtml-let x="_.str(get_size/1000)">
<dtml-if "_.len(x)>3">
	<dtml-var "'%s %s'%(x[:-3], x[-3:])">
	<dtml-var x>

the time stuff

<dtml-var "bobobase_modification_time().toZone('GMT+2')">

> It gives me the name of the object, the size in bytes and the modification
> time in GMT.

there is also a way to set this to be local time(your zope that is)....
to sleepy to remember or look it up.......

try searching the mailing lists... although i'm sure someone will chime

> I need to do the following: express the size in kb, format the output with
> spaces for thousands.

> I also need the date displayed according to my locale (+2 GMT in Sweden) so
> if bobobase_modification_time is 10:48, I need to show it as 8:48, and on
> top of that I also need to take dayligth savings into account.
> How do I do it? The fmt strings are abviously adjusted to US standards, so
> us ISO-people need to hack our own format strings :-).
> I know i could calculate the size in KB myself IF I only knew how to get the
> get_size attribute into a calculation expression (that goes for
> bobobase_modification_time as well, however this returns as string. How do I
> get the date as a date?)

you might want to check out some of the howtos on DTML stuff, although
generally its easier to do complex calculations in a python method.

bobobase_modification_time is a method that returns a date time object,
its just formatted as a string on the page when you render it.

> Any help is appreciated and needed. Thank you.
> /dario
> PS: has anyone been thinking of renaming bobobase_modification_time to
> something shorter and more intuitive, like, say, modification_time?

it gets my vote.