diff --git a/wiki/macro/LostSoulsInGroups.py b/wiki/macro/LostSoulsInGroups.py new file mode 100644 index 00000000..8258399c --- /dev/null +++ b/wiki/macro/LostSoulsInGroups.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +""" + MoinMoin - LostSoulsInGroups macro + + List all items in custom groups that do not have user accounts + (either haven't registered yet or have been deleted or there's a typo) + + @copyright: 2007 Alexander "Loki" Agibalov + @license: GNU GPL, see COPYING for details. + + changes: + 12.2007 - conversion to new syntax by Bolesław Kulbabiński +""" + +from MoinMoin import wikiutil, user +from MoinMoin.Page import Page +from MoinMoin.PageEditor import PageEditor +import re, sys + +def macro_LostSoulsInGroups(macro, args): + request = macro.request + _ = macro.request.getText + + sRet = "

Items in custom groups (Users in custom groups who don't have user accounts)

" + sRet = sRet + "" + userlist = [] + lostsouls = {} + for uid in user.getUserList(request): + userlist.append(user.User(request, uid).name) + + isgroup = request.cfg.cache.page_group_regex.search + grouppages = request.rootpage.getPageList(user='', filter=isgroup) + + srch = re.compile("^ \* [^ ]*", re.M) + for pg in grouppages: + pged = PageEditor(request, pg) + pagelines = pged.getlines() + for lin in pagelines: + srchS = srch.match(lin) + if srchS: + st = srchS.group() + st = st[3:] + try: + usr = userlist.index(st) + except ValueError: + if lostsouls.has_key(pg): + temp_lst = lostsouls[pg] + temp_lst.append(st) + lostsouls[pg] = temp_lst + else: + lostsouls[pg] = [st] + + for k, v in lostsouls.iteritems(): + st = '' % (Page(request, k).link_to(request), ", ".join(v)) + sRet = sRet + st + + sRet = sRet + "
%s%s
" + return macro.formatter.rawHTML(sRet) + + +def execute(macro, args): + try: + return wikiutil.invoke_extension_function( + macro.request, macro_LostSoulsInGroups, args, [macro]) + except ValueError, err: + return macro.request.formatter.text( + "<>" % err.args[0]) +