From: Vincent Le Gallic Date: Sat, 9 Nov 2013 23:07:48 +0000 (+0100) Subject: [mailman] le script fait toujours ce qu'il doit faire, mais on peut maintenant obteni... X-Git-Url: http://gitweb.pimeys.fr/?a=commitdiff_plain;h=cd53313aa0d8fb7c7d48b76d3ca2e7f061a24b5c;p=scripts-20-100.git [mailman] le script fait toujours ce qu'il doit faire, mais on peut maintenant obtenir la liste des MLs dont on est modo/admin --- diff --git a/mailman_bad_guys.py b/mailman_bad_guys.py index c086725..ba2942b 100755 --- a/mailman_bad_guys.py +++ b/mailman_bad_guys.py @@ -27,25 +27,42 @@ def list_lists(): return [unicode(n) for n in Utils.list_names()] def list_members(ml): - """Donne la liste des membres de ``ml``. + """Donne [la liste des membres de ``ml``, la liste de ses admins, la liste de ses modérateurs]. Deals with fucking unicode problems.""" ml = MailList.MailList(ml, lock=False) rmembers = ml.getRegularMemberKeys() dmembers = ml.getDigestMemberKeys() - l = rmembers + dmembers - l = [s if isinstance(s, unicode) else s.decode("utf-8") for s in l] - return l + members = rmembers + dmembers + members = [s if isinstance(s, unicode) else s.decode("utf-8") for s in members] + admins = [i for i in ml.owner] + moderators = [i for i in ml.moderator] + return [members, admins, moderators] def get_all(): - """Retourne un dico nom_de_ml -> membres""" + """Retourne un dico nom_de_ml -> [membres, admins, moderateurs]""" return {n: list_members(n) for n in list_lists()} -def get_mls_from_mail(mail, all=None): - """Retourne la liste des mls auxquelles est abonné ``mail``. +def get_field_from_mail(mail, fieldno, all=None): + """Retourne la liste des mls dont mail est : + * membre si ``fieldno`` = 1 + * + * Calcule le dico ``all`` si on ne lui donne pas.""" if all == None: all = get_all() - return [n for (n, members) in all.iteritems() if mail in members] + return [n for (n, fields) in all.iteritems() if mail in fields[fieldno]] + +def get_mls_from_mail(mail, all=None): + """Retourne la liste des mls auxquelles est abonné ``mail``.""" + return get_field_from_mail(mail, 0, all) + +def get_admins_from_mail(mail, all=None): + """Retourne la liste des mls dont ``mail`` est admin.""" + return get_field_from_mail(mail, 1, all) + +def get_moderators_from_mail(mail, all=None): + """Retourne la liste des mls dont ``mail`` est admin.""" + return get_field_from_mail(mail, 2, all) def exterminate(mail, ml): """Désabonne ``mail`` de ``ml``.