[Mailman-Users] Ordering of messages in the moderation queue by date?

Mark Sapiro mark at msapiro.net
Thu Jun 20 01:56:39 CEST 2013


On 06/19/2013 03:02 PM, Mark Sapiro wrote:
> 
> Attached is a preliminary patch to Mailman/Cgi/admindb.py.


Sorry, the patch was removed by content filtering. It should make it
this time.

-- 
Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan
-------------- next part --------------
--- 2.1/Mailman/Cgi/admindb.py	2013-06-07 13:36:03.000000000 -0700
+++ 21/Mailman/Cgi/admindb.py	2013-06-19 14:43:33.084164988 -0700
@@ -43,6 +43,11 @@
 EMPTYSTRING = ''
 NL = '\n'
 
+# Temp s/b mlist.admindb_summary
+# 0 -> grouped/sorted by sender
+# 1 -> ungrouped, sorted by time
+SUMMARY = 1
+
 # Set up i18n.  Until we know which list is being requested, we use the
 # server's default.
 _ = i18n._
@@ -53,13 +58,23 @@
 
 
 
-def helds_by_sender(mlist):
+def helds_by_skey(mlist):
     heldmsgs = mlist.GetHeldMessageIds()
-    bysender = {}
+    byskey = {}
     for id in heldmsgs:
+        ptime = mlist.GetRecord(id)[0]
         sender = mlist.GetRecord(id)[1]
-        bysender.setdefault(sender, []).append(id)
-    return bysender
+        if SUMMARY == 0:
+            skey = (0, sender)
+        else:
+            skey = (ptime, sender)
+        byskey.setdefault(skey, []).append((ptime, id))
+    # Sort groups by time
+    for k, v in byskey.items():
+        if len(v) > 1:
+            v.sort()
+            byskey[k] = v
+    return byskey
 
 
 def hacky_radio_buttons(btnname, labels, values, defaults, spacing=3):
@@ -404,8 +419,8 @@
 
 def show_helds_overview(mlist, form):
     # Sort the held messages by sender
-    bysender = helds_by_sender(mlist)
-    if not bysender:
+    byskey = helds_by_skey(mlist)
+    if not byskey:
         return 0
     form.AddItem('<hr>')
     form.AddItem(Center(Header(2, _('Held Messages'))))
@@ -413,9 +428,10 @@
     admindburl = mlist.GetScriptURL('admindb', absolute=1)
     table = Table(border=0)
     form.AddItem(table)
-    senders = bysender.keys()
-    senders.sort()
-    for sender in senders:
+    skeys = byskey.keys()
+    skeys.sort()
+    for skey in skeys:
+        sender = skey[1]
         qsender = quote_plus(sender)
         esender = Utils.websafe(sender)
         senderurl = admindburl + '?sender=' + qsender
@@ -499,7 +515,7 @@
         right.AddCellInfo(right.GetCurrentRowIndex(), 0, colspan=2)
         right.AddRow([' ', ' '])
         counter = 1
-        for id in bysender[sender]:
+        for ptime, id in byskey[skey]:
             info = mlist.GetRecord(id)
             ptime, sender, subject, reason, filename, msgdata = info
             # BAW: This is really the size of the message pickle, which should


More information about the Mailman-Users mailing list