[Twisted-web] [Nevow] nested sequence pattern

Manlio Perillo manlio_perillo at libero.it
Sat Jun 17 16:35:24 CDT 2006


Manlio Perillo ha scritto:
> Hi.
> 
> I have an SQL Table like:
> letters, numbers
> A,      1
> A,      2
> A,      3
> B,      4
> B,      7
> C,      2
> 
> I want to render it in a table like:
> 
> [...]
> Is this possible with Nevow template? And how?
> 

I have solved but I don't like the solution.

Only two question:

with this template

...
    <n:invisible n:render="table" n:data="theLetters">
        <tbody n:pattern="tbody" n:render="tbody"
              n:data="theNumbers">
          <tr n:pattern="header" n:render="header">
            <td scope="rowgroup"><n:slot name="letter" /></td>
            <td></td>
          </tr>
          <tr n:pattern="row" n:render="row">
            <td></td>
            <td><n:slot name="number" /></td>
          </tr>
        </tbody>
   </n:invisible>


1) Why I can access the "header" pattern from "table" render?
2) How can I use the "theNumbers" data directive?


my renderers are

def data_theLetters(self, ctx, data):
    return "SELECT DISTINCT letters FROM MyTable"


def render_table(self, ctx, data):
    tag = ctx.tag

    pattern = tag.patternGenerator("tbody")
    content = []
    for letter in data:
        numbers = """SELECT numbers FROM MyTable
                     WHERE letter = :letter"""
            		
        content.append(pattern(data=(letter, numbers)))


    return ctx.tag.clear()[content]


def render_tbody(self, ctx, data):
     tag = ctx.tag

     header = tag.onePattern("header")(data = data[0])
     pattern = tag.patternGenerator("row")

     content = [pattern(data=row) for row in data[1]]

     return tag.clear()[header, content]



Thanks and regards   Manlio Perillo



More information about the Twisted-web mailing list