Google search turned up: http://mail.python.org/pipermail/mailman-developers/2001-October/009686.html
This was written for Mailman v2.0.6 === *** Mailman/Cgi/admindb.py.orig Wed Oct 10 13:31:46 2001 --- Mailman/Cgi/admindb.py Wed Oct 10 18:30:25 2001 *************** *** 270,275 **** --- 270,277 ---- continue # get the action comment and reasons if present commentkey = 'comment-%d' % request_id + headerskey = 'headers-%d' % request_id + contentskey = 'fulltext-%d' % request_id preservekey = 'preserve-%d' % request_id forwardkey = 'forward-%d' % request_id forwardaddrkey = 'forward-addr-%d' % request_id *************** *** 278,285 **** --- 280,293 ---- preserve = 0 forward = 0 forwardaddr = '' + headers = '' + contents = '' if cgidata.has_key(commentkey): comment = cgidata[commentkey].value + if cgidata.has_key(headerskey): + headers = cgidata[headerskey].value + if cgidata.has_key(contentskey): + contents = cgidata[contentskey].value if cgidata.has_key(preservekey): preserve = cgidata[preservekey].value if cgidata.has_key(forwardkey): *************** *** 290,296 **** # handle the request id try: mlist.HandleRequest(request_id, v, comment, ! preserve, forward, forwardaddr) except (KeyError, Errors.LostHeldMessage): # that's okay, it just means someone else has already updated the # database, so just ignore this id --- 298,304 ---- # handle the request id try: mlist.HandleRequest(request_id, v, comment, ! preserve, forward, forwardaddr, headers, contents) except (KeyError, Errors.LostHeldMessage): # that's okay, it just means someone else has already updated the # database, so just ignore this id *** Mailman/ListAdmin.py.orig Wed Oct 10 13:31:46 2001 --- Mailman/ListAdmin.py Wed Oct 10 18:40:27 2001 *************** *** 122,133 **** return type def HandleRequest(self, id, value, comment=None, preserve=None, ! forward=None, addr=None): self.__opendb() rtype, data = self.__db[id] if rtype == HELDMSG: status = self.__handlepost(data, value, comment, preserve, ! forward, addr) else: assert rtype == SUBSCRIPTION status = self.__handlesubscription(data, value, comment) --- 122,133 ---- return type def HandleRequest(self, id, value, comment=None, preserve=None, ! forward=None, addr=None, headers=None, contents=None): self.__opendb() rtype, data = self.__db[id] if rtype == HELDMSG: status = self.__handlepost(data, value, comment, preserve, ! forward, addr, headers, contents) else: assert rtype == SUBSCRIPTION status = self.__handlesubscription(data, value, comment) *************** *** 172,178 **** data = time.time(), sender, msgsubject, reason, filename, msgdata self.__db[id] = (HELDMSG, data) ! def __handlepost(self, record, value, comment, preserve, forward, addr): # For backwards compatibility with pre 2.0beta3 if len(record) == 5: ptime, sender, subject, reason, filename = record --- 172,178 ---- data = time.time(), sender, msgsubject, reason, filename, msgdata self.__db[id] = (HELDMSG, data) ! def __handlepost(self, record, value, comment, preserve, forward, addr, headers, contents): # For backwards compatibility with pre 2.0beta3 if len(record) == 5: ptime, sender, subject, reason, filename = record *************** *** 181,186 **** --- 181,202 ---- # New format of record ptime, sender, subject, reason, filename, msgdata = record path = os.path.join(mm_cfg.DATA_DIR, filename) + # Handle editing + if len(headers)+len(contents): + fp = open(path) + unixfrom = fp.readline() + rest = fp.read() + # Parse headers and body + parts = string.split(rest,'\n\n') + if len(headers) == 0: + headers = parts[0] + if len(contents) == 0: + contents = parts[1] + fp.close + # Now write the changed result + fp = open(path,'w') + fp.write(unixfrom + headers + '\n\n' + contents) + fp.close # Handle message preservation if preserve: parts = string.split(os.path.split(path)[1], '-') === ----- Original Message ----- From: "Kirez Korgan" <[EMAIL PROTECTED]> To: "Jon Carnes" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Monday, February 25, 2002 2:21 PM Subject: Re: [Mailman-Users] Config for moderator to edit posts in admindb > How do I find and install, or re-create, this patch that someone else made > to allow the admin to edit the copy of the message and then replace the > original message with the copy? > > Kirez > > > ----- Original Message ----- > From: "Jon Carnes" <[EMAIL PROTECTED]> > To: "Kirez Korgan" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> > Sent: Monday, February 25, 2002 1:02 PM > Subject: Re: [Mailman-Users] Config for moderator to edit posts in admindb > > > > Yes. Mailman is open source software and is very easy to modify. Someone > > has already made a patch that does exactly that (allows the admin to > > view/edit the copy of the message, and then replaces the original message > > with the copy). > > > > The original message is in ~mailman/held/.. > > Each message is stored in a file of the form: heldmsg-<list_name>-xxxx > > > > If you don't want to hack Mailman, you can let your admins edit the files > > directly. You can link this directory to a common access point and give > > your admins rights to it (or you can mount it via samba...). Then your > > admins can easily edit the messages directly. > > > > Jon Carnes > > ----- Original Message ----- > > From: "Kirez Korgan" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Monday, February 25, 2002 1:34 PM > > Subject: [Mailman-Users] Config for moderator to edit posts in admindb > > > > > > > It seems that Mailman makes a copy of a message appear in the admindb, > for > > > moderators to process (accept or reject). > > > > > > My moderators want to EDIT the message, however. > > > > > > Is it possible to config Mailman so that they can edit the message > through > > > the admindb / viewer? > > > > > > cheers, > > > Kirez > > > > > > > > > ------------------------------------------------------ > > > Mailman-Users maillist - [EMAIL PROTECTED] > > > http://mail.python.org/mailman/listinfo/mailman-users > > ------------------------------------------------------ Mailman-Users maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-users