|
rb@507
|
1 |
# -*- coding: iso-8859-1 -*-
|
|
rb@507
|
2 |
"""
|
|
rb@507
|
3 |
MoinMoin - User account Listing
|
|
rb@507
|
4 |
|
|
rb@507
|
5 |
(mostly copied from admin.do_user_browser)
|
|
rb@507
|
6 |
@copyright: 2001-2004 Juergen Hermann <jh@web.de>,
|
|
rb@507
|
7 |
2003-2007 MoinMoin:ThomasWaldmann,
|
|
rb@507
|
8 |
2007-2010 MoinMoin:ReimarBauer,
|
|
rb@507
|
9 |
@license: GNU GPL, see COPYING for details.
|
|
rb@507
|
10 |
"""
|
|
rb@507
|
11 |
|
|
rb@507
|
12 |
from MoinMoin import user, wikiutil
|
|
rb@507
|
13 |
from MoinMoin.util.dataset import TupleDataset, Column
|
|
rb@507
|
14 |
from MoinMoin.widget.browser import DataBrowserWidget
|
|
rb@507
|
15 |
from MoinMoin.Page import Page
|
|
rb@507
|
16 |
|
|
rb@507
|
17 |
|
|
rb@507
|
18 |
def macro_UserList(macro):
|
|
rb@507
|
19 |
""" macro to list users. """
|
|
rb@507
|
20 |
request = macro.request
|
|
rb@507
|
21 |
_ = request.getText
|
|
rb@507
|
22 |
|
|
rb@507
|
23 |
data = TupleDataset()
|
|
rb@507
|
24 |
data.columns = []
|
|
rb@507
|
25 |
data.columns.extend([
|
|
rb@507
|
26 |
Column('name', label=_('Username')),
|
|
rb@507
|
27 |
Column('email', label=_('Email')),
|
|
rb@507
|
28 |
Column('groups', label=_('Member of Groups')),
|
|
rb@507
|
29 |
Column('language', label=_('Language'), autofilter=1),
|
|
rb@507
|
30 |
])
|
|
rb@507
|
31 |
isgroup = request.cfg.cache.page_group_regexact.search
|
|
rb@507
|
32 |
groupnames = request.rootpage.getPageList(user='', filter=isgroup)
|
|
rb@507
|
33 |
|
|
rb@507
|
34 |
# Iterate over users
|
|
rb@507
|
35 |
for uid in user.getUserList(request):
|
|
rb@507
|
36 |
account = user.User(request, uid)
|
|
rb@507
|
37 |
# don't offer groupnames to users which aren't allowed to read them
|
|
rb@507
|
38 |
grouppage_links = ', '.join([Page(request, groupname).link_to(request)
|
|
rb@507
|
39 |
for groupname in groupnames
|
|
rb@507
|
40 |
if account.name in request.groups.get(groupname) and request.user.may.read(groupname)])
|
|
rb@507
|
41 |
|
|
rb@507
|
42 |
userhomepage = Page(request, account.name)
|
|
rb@507
|
43 |
if userhomepage.exists():
|
|
rb@507
|
44 |
namelink = userhomepage.link_to(request)
|
|
rb@507
|
45 |
else:
|
|
rb@507
|
46 |
namelink = wikiutil.escape(account.name)
|
|
rb@507
|
47 |
|
|
rb@507
|
48 |
if account.disabled:
|
|
rb@507
|
49 |
enable_disable_link = request.page.link_to(
|
|
rb@507
|
50 |
request, text=_('Enable user'),
|
|
rb@507
|
51 |
querystr={"action": "userprofile",
|
|
rb@507
|
52 |
"name": account.name,
|
|
rb@507
|
53 |
"key": "disabled",
|
|
rb@507
|
54 |
"val": "0",
|
|
rb@507
|
55 |
},
|
|
rb@507
|
56 |
rel='nofollow')
|
|
rb@507
|
57 |
namelink += " (%s)" % _("disabled")
|
|
rb@507
|
58 |
else:
|
|
rb@507
|
59 |
enable_disable_link = request.page.link_to(
|
|
rb@507
|
60 |
request, text=_('Disable user'),
|
|
rb@507
|
61 |
querystr={"action": "userprofile",
|
|
rb@507
|
62 |
"name": account.name,
|
|
rb@507
|
63 |
"key": "disabled",
|
|
rb@507
|
64 |
"val": "1",
|
|
rb@507
|
65 |
},
|
|
rb@507
|
66 |
rel='nofollow')
|
|
rb@507
|
67 |
|
|
rb@507
|
68 |
if account.email:
|
|
rb@507
|
69 |
email_link = (request.formatter.url(1, 'mailto:' + account.email, css='mailto') +
|
|
rb@507
|
70 |
request.formatter.text(account.email) +
|
|
rb@507
|
71 |
request.formatter.url(0))
|
|
rb@507
|
72 |
else:
|
|
rb@507
|
73 |
email_link = ''
|
|
rb@507
|
74 |
|
|
rb@507
|
75 |
# language defined in settings or default language
|
|
rb@507
|
76 |
language = account.language or request.cfg.language_default
|
|
rb@507
|
77 |
|
|
rb@507
|
78 |
data.addRow((
|
|
rb@507
|
79 |
(request.formatter.rawHTML(namelink)),
|
|
rb@507
|
80 |
email_link,
|
|
rb@507
|
81 |
request.formatter.rawHTML(grouppage_links),
|
|
rb@507
|
82 |
(language, language)
|
|
rb@507
|
83 |
))
|
|
rb@507
|
84 |
|
|
rb@507
|
85 |
if data:
|
|
rb@507
|
86 |
browser = DataBrowserWidget(request)
|
|
rb@507
|
87 |
browser.setData(data, sort_columns=[0])
|
|
rb@507
|
88 |
return browser.render(method="GET")
|
|
rb@507
|
89 |
|
|
rb@507
|
90 |
# No data
|
|
rb@507
|
91 |
return ''
|
|
rb@507
|
92 |
|