Viewing posts for the category Development
So a while ago I cleaned out my dev overlay and added dev-libs/efl-1.20.7 and x11-wm/enlightenment-0.22.1 (and 0.22.2)
So while tracking down problems with performance with (webmail - ) clients I found out, that the problem is - at least partly - related to the sheer amount of IMAP folders (dbmail_mailboxes) a user had ( > 3500 !).
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( T.tr [ T.td [ a ], T.td [ b ] ])
ctx.tag = tags
return ctx.tag
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:
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 nevow.page 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):
self.data = None
if data == None:
raise ValueError("No Data")
self.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'