Corey Kovacs schrieb:
> I am trying create a representation of a computer rack using genshi in
> TG2. What I am trying to do is
> loop through the rack elevations and when I find an elevation where a
> host belongs, I want to add some
> data to show a host is at that spot. Thats the easy part. I also want to
> modify the rowspan for the <td>
> element so that the host <td> spans the appropriate number of elevations
> to show the vertical size of
> the machine.
>
> I've done this using PHP but have long since decided to rewrite my
> project in Python/TG. Now I am
> finding that i am somewhat limited in what i can achieve with immutable
> variables.
>
> Basically, I need this..
>
> temp=0
> print "<TABLE>"
> print "<TR><TD>row</TD><TD>rack.rackid</TD><TD>row</TD></TR>"
> for(row=1; row<43; row++)
> for host in hostlist:
> if host.elevation == row:
> uspan = host.height-1
> print "<TR><TD>row</TD><TD
> rowspan=uspan>host.hostname</TD><TD>row</TD></TR>"
> while temp > 0 :
> row++
> print "<TR><TD>row</TD><TD>row</TD></TR>"
> uspan--
> else
> print "<TR><TD>row</TD><TD></TD><TD>row</TD></TR>"
>
> print "<TR><TD>row</TD><TD>PDU</TD><TD>row</TD></TR>"
> print "<TR><TD>row</TD><TD>PDU</TD><TD>row</TD></TR>"
>
>
> The above (really ugly) pseudo-code mashup tries to explain it
I guess there is an error in there, the temp-variable is never set. But
I guess you could ditch it & use
while uspan:
...
Now in genshi, one does this via pre-computation of the rowlist.
Essentially, you extract your logic to create a data-structure that fits
your needs. You can do this in your controller (I don't see anything
wrong with that, the MVC-pattern in webapps goes only so far), or inside
a <?python-block.
rows = [None] * 43
for host in hostlist:
host_rows = [Bunch()] * host.height
for row in host_rows:
row.rowspan = None
row.host = host # for template reference
host_rows[0].rowspan = host.heighth - 1
rows[host.elevation:host.elevation + host.height] = host_rows
Then in the template, you can do this:
<table>
<py:c py:strip="True" py:for="row in rows">
<tr py:if="not row">normal row without host</tr>
<tr py:if="row and row.rowspan"><!-- first row with host -->
</tr>
<tr py:if="row and not row.rowspan"><!-- following host-rows -->
</tr>
</py:c>
</table>
Diez
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---