Blog

Viewing posts for the category Development

Gentoo Dev overlay in layman again - contains efl 1.20.7 and enlightenment 0.22.[12]

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)

Dbmail quickly get mailbox counts (including deleted emails) [postgresql]

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

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( T.tr [ T.td [ a ], T.td [ 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 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'