]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
[mailman] le script fait toujours ce qu'il doit faire, mais on peut maintenant obteni...
authorVincent Le Gallic <legallic@crans.org>
Sat, 9 Nov 2013 23:07:48 +0000 (00:07 +0100)
committerVincent Le Gallic <legallic@crans.org>
Sat, 9 Nov 2013 23:07:48 +0000 (00:07 +0100)
mailman_bad_guys.py

index c0867252594c972554745eca218f35a03abd0325..ba2942be7f9b48da3a5127934effc4964ead40f4 100755 (executable)
@@ -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``.