[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