Viewing posts from March, 2009

Nevow HTML Table rendering with xhtml template and stan

Very short example of a Page with xml template and a table which is used to render some data (with stan).
Thanks to Brend for sharing this with me (he also said that there is probably some way to do it without stan, but I quite like this as it is easy to use):

First up the python code(I'll sort out the indent issues later but for now just add the appropriate indent for python code - if you don't know what I mean you should probably read a python howto first):

from nevow import rend
from nevow import loaders
from nevow import tags as T

class SiteRoot(rend.Page):
    addSlash = True
    docFactory = loaders.xmlfile('templates/page.xml')
    def data_title(self, ctx, data):
        return u'Blechlager Verwaltung'
    def render_testTable(self, ctx, data):
        rows = [[11,12],[21,22],[31,32]]
        tags = []
        for (a, b) in rows:
            tags.append( [ [ a ], [ b ] ])
        ctx.tag = tags
        return ctx.tag

Nevow DropDownListWithDefault class (Element)

I wrote a page with quite a few dropdown lists .. since it gets tedious to just copy and paste I wrote myself a DropDownList class which takes a name and default:

Nevow basic container Page + Page/Element with Data

Here some small code - snippets where some form of data gets passed to a page / element. This could of course be changed to get more data or not a dict/axiom db but I prefer it this way (Pretty much every axiom/nevow app will need something like this afaik):

# -*- coding: utf8 -*-

from nevow.rend import Page
from import Element, renderer
from nevow import loaders
from nevow import tags as T

class PageWithDB(Page):
    Own Page class to save myself passing the db object to every sub-page
    def __init__(self, db, original = None, docFactory = None):
        self.db = None
        if not db:
            raise ValueError("No Database given")
        self.db = db
        Page.__init__(self, original, docFactory)

class ElementWithData(Element):
    Element with Data
    def __init__(self, data, docFactory = None): = None
        if data == None:
            raise ValueError("No Data") = data
        Element.__init__(self, docFactory)

class ContainerPage(PageWithDB):
    Container Page which just has title and content renderer and
    loads only skeleton page. To be used with Elements
    The render_title and render_content methods should be overridden
    addSlash = True
    docFactory = loaders.xmlfile(u'templates/pageskel.xml')
    def render_title(self, ctx, data):
        return u'TITLE RENDER'
    def render_content(self, ctx, data):
        return u'CONTENT'

Beagle config for headless Server with Web - Frontend

Just remembered today, that I nearly forgot to blog about my beagle setup on a file server with web-frontend and headless config.

Here goes: