[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.

http://www.zope.org/Members/ZQR


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-else>
	<dtml-var x>
</dtml-if>
</dtml-let>



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
in.

> 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. 

Cheers

Kapil