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)
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()