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 <m...@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
--- 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
------------------------------------------------------ Mailman-Users mailing list Mailman-Users@python.org http://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://wiki.list.org/x/AgA3 Security Policy: http://wiki.list.org/x/QIA9 Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-users/archive%40jab.org