예제 #1
0
def unquoteWikinameOld(filename, charsets=[from_encoding, ]):
    """
    Return decoded original filename when given an encoded filename.
    @param filename: encoded filename
    @rtype: string
    @return: decoded, original filename
    """
    if isinstance(filename, type(u'')): # from some places we get called with unicode
        filename = filename.encode(from_encoding)
    fn = ''
    i = 0
    while i < len(filename):
        c = filename[i]
        if c == '(':
            c1 = filename[i+1]
            c2 = filename[i+2]
            close = filename[i+3]
            if close != ')':
                raise Exception('filename encoding invalid')
            i += 4
            fn = fn + chr(16 * int(c1, 16) + int(c2, 16))
        else:
            fn = fn + c
            i += 1
    return wikiutil.decodeUserInput(fn, charsets)
예제 #2
0
def text(pagename, request, params=''):
    from MoinMoin.util.dataset import TupleDataset, Column
    from MoinMoin.widget.browser import DataBrowserWidget
    from cStringIO import StringIO
    _ = request.getText

    # check params
    filterpage = None
    if params.startswith('page='):
        params = params[len('page='):]        
        filterpage = wikiutil.decodeUserInput(params)
    
    if request and request.form and request.form.has_key('page'):
        filterpage = request.form['page'][0]

    days, views, edits = get_data(pagename, request, filterpage)

    hits = TupleDataset()
    hits.columns = [Column('day', label=_("Date"), align='left'),
                    Column('views', label=_("Views/day") , align='right'),
                    Column('edits', label=_("Edits/day") , align='right')
                    ]

    maxentries = 30

    if maxentries < len(days):
        step = float(len(days))/ maxentries
    else:
        step = 1
        
    sv = 0.0
    se = 0.0
    sd = 0.0
    cnt = 0

    for i in xrange(len(days)-1,-1,-1):
        d,v,e = days[i], views[i], edits[i]
        # sum up views and edits to step days 
        sd += 1
        cnt += 1
        sv += v
        se += e
        if cnt >= step:
            cnt -= step
            hits.addRow((d, "%.1f" % (sv/sd), "%.1f" % (se/sd)))
            sv = 0.0
            se = 0.0
            sd = 0.0

    buffer = StringIO()
    request.redirect(buffer)
    table = DataBrowserWidget(request)
    table.setData(hits)
    table.render()
    request.redirect()

    return buffer.getvalue()