1 # -*- coding: iso-8859-1 -*-
3 MoinMoin - User account Listing
5 (mostly copied from admin.do_user_browser)
6 @copyright: 2001-2004 Juergen Hermann <jh@web.de>,
9 @license: GNU GPL, see COPYING for details.
12 from MoinMoin import user, wikiutil
13 from MoinMoin.util.dataset import TupleDataset, Column
14 from MoinMoin.widget.browser import DataBrowserWidget
15 from MoinMoin.Page import Page
18 def macro_UserList(macro):
19 """ macro to list users. """
20 request = macro.request
26 Column('name', label=_('Username')),
27 Column('email', label=_('Email')),
28 Column('groups', label=_('Member of Groups')),
29 Column('language', label=_('Language'), autofilter=1),
31 isgroup = request.cfg.cache.page_group_regexact.search
32 groupnames = request.rootpage.getPageList(user='', filter=isgroup)
35 for uid in user.getUserList(request):
36 account = user.User(request, uid)
37 # don't offer groupnames to users which aren't allowed to read them
38 grouppage_links = ', '.join([Page(request, groupname).link_to(request)
39 for groupname in groupnames
40 if account.name in request.groups.get(groupname) and request.user.may.read(groupname)])
42 userhomepage = Page(request, account.name)
43 if userhomepage.exists():
44 namelink = userhomepage.link_to(request)
46 namelink = wikiutil.escape(account.name)
49 enable_disable_link = request.page.link_to(
50 request, text=_('Enable user'),
51 querystr={"action": "userprofile",
57 namelink += " (%s)" % _("disabled")
59 enable_disable_link = request.page.link_to(
60 request, text=_('Disable user'),
61 querystr={"action": "userprofile",
69 email_link = (request.formatter.url(1, 'mailto:' + account.email, css='mailto') +
70 request.formatter.text(account.email) +
71 request.formatter.url(0))
75 # language defined in settings or default language
76 language = account.language or request.cfg.language_default
79 (request.formatter.rawHTML(namelink)),
81 request.formatter.rawHTML(grouppage_links),
86 browser = DataBrowserWidget(request)
87 browser.setData(data, sort_columns=[0])
88 return browser.render(method="GET")