def text(pagename, request): from MoinMoin.util.dataset import TupleDataset, Column from MoinMoin.widget.browser import DataBrowserWidget fmt = request.formatter _ = request.getText data = get_data(request) sum = 0.0 for cnt, ua in data: sum += cnt agents = TupleDataset() agents.columns = [Column('agent', label=_("User agent"), align='left'), Column('value', label= '%', align='right')] cnt_printed = 0 data = data[:10] for cnt, ua in data: try: ua = unicode(ua) agents.addRow((ua, "%.2f" % (100.0*cnt/sum))) cnt_printed += cnt except UnicodeError: pass agents.addRow((_('Others'), "%.2f" % (100*(sum-cnt_printed)/sum))) table = DataBrowserWidget(request) table.setData(agents) return table.toHTML()
def text(pagename, request, params=''): from MoinMoin.util.dataset import TupleDataset, Column from MoinMoin.widget.browser import DataBrowserWidget _ = 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 table = DataBrowserWidget(request) table.setData(hits) return table.toHTML()
def do_user_browser(request): """ Browser for SystemAdmin macro. """ from MoinMoin.util.dataset import TupleDataset, Column from MoinMoin.Page import Page _ = request.getText data = TupleDataset() data.columns = [ #Column('id', label=('ID'), align='right'), Column('name', label=('Username')), Column('email', label=('Email')), #Column('action', label=_('Action')), ] # Iterate over users for uid in user.getUserList(request): account = user.User(request, uid) userhomepage = Page(request, account.name) if userhomepage.exists(): namelink = userhomepage.link_to(request) else: namelink = account.name data.addRow(( #request.formatter.code(1) + uid + request.formatter.code(0), request.formatter.rawHTML(namelink), (request.formatter.url(1, 'mailto:' + account.email, 'external', pretty_url=1, unescaped=1) + request.formatter.text(account.email) + request.formatter.url(0)), #'', )) if data: from MoinMoin.widget.browser import DataBrowserWidget browser = DataBrowserWidget(request) browser.setData(data) return browser.toHTML() # No data return ''
def execute(macro, args): _ = macro.request.getText fmt = macro.formatter # create data description data = TupleDataset() data.columns = [] for dummy in range(COLUMNS): data.columns.extend([ Column('markup', label=_('Markup')), Column('image', label=_('Display'), align='center'), Column('filename', label=_('Filename')), Column('', label=''), ]) data.columns[-1].hidden = 1 # iterate over smileys, in groups of size COLUMNS smileys = config.smileys.items() smileys.sort() for idx in range(0, len(smileys), COLUMNS): row = [] for off in range(COLUMNS): if idx+off < len(smileys): markup, smiley = smileys[idx+off] img = fmt.smiley(markup) row.extend([ fmt.code(1) + fmt.text(markup) + fmt.code(0), fmt.rawHTML(img), fmt.code(1) + smiley[3] + fmt.code(0), '', ]) else: row.extend([' '] * 4) data.addRow(tuple(row)) # display table if data: browser = DataBrowserWidget(macro.request) browser.setData(data) return browser.toHTML() return ''
def do_admin_browser(request): """ Browser for SystemAdmin macro. """ from MoinMoin.util.dataset import TupleDataset, Column _ = request.getText data = TupleDataset() data.columns = [ Column('page', label=('Page')), Column('file', label=('Filename')), Column('size', label=_('Size'), align='right'), #Column('action', label=_('Action')), ] # iterate over pages that might have attachments pages = request.rootpage.getPageList() for pagename in pages: # check for attachments directory page_dir = getAttachDir(request, pagename) if os.path.isdir(page_dir): # iterate over files of the page files = os.listdir(page_dir) for filename in files: filepath = os.path.join(page_dir, filename) data.addRow(( Page(request, pagename).link_to(request, querystr="action=AttachFile"), wikiutil.escape(filename.decode(config.charset)), os.path.getsize(filepath), # '', )) if data: from MoinMoin.widget.browser import DataBrowserWidget browser = DataBrowserWidget(request) browser.setData(data) return browser.toHTML() return ''
def macro_UserList(macro): """ macro to list users. """ request = macro.request _ = request.getText data = TupleDataset() data.columns = [ Column('name', label=_('Username')), Column('email', label=_('Email')), Column('groups', label=_('Member of Groups')), Column('language', label=_('Language')), ] isgroup = request.cfg.cache.page_group_regexact.search groupnames = request.rootpage.getPageList(user='', filter=isgroup) # Iterate over users for uid in user.getUserList(request): account = user.User(request, uid) # don't offer groupnames to users which aren't allowed to read them grouppage_links = ', '.join([Page(request, groupname).link_to(request) for groupname in groupnames if request.dicts.has_member(groupname, account.name) and request.user.may.read(groupname)]) userhomepage = Page(request, account.name) if userhomepage.exists(): namelink = userhomepage.link_to(request) else: namelink = wikiutil.escape(account.name) if account.disabled: enable_disable_link = request.page.link_to( request, text=_('Enable user'), querystr={"action": "userprofile", "name": account.name, "key": "disabled", "val": "0", }, rel='nofollow') namelink += " (%s)" % _("disabled") else: enable_disable_link = request.page.link_to( request, text=_('Disable user'), querystr={"action": "userprofile", "name": account.name, "key": "disabled", "val": "1", }, rel='nofollow') if account.email: email_link = (request.formatter.url(1, 'mailto:' + account.email, css='mailto') + request.formatter.text(account.email) + request.formatter.url(0)) else: email_link = '' # language defined in settings or default language language = account.language or request.cfg.language_default data.addRow(( request.formatter.rawHTML(namelink), email_link, request.formatter.rawHTML(grouppage_links), language, )) if data: from MoinMoin.widget.browser import DataBrowserWidget browser = DataBrowserWidget(request) browser.setData(data) return browser.toHTML() # No data return ''