You can edit pending messages in Mailman 2.0.8 with the following patch. I have not tested it on 2.0.9 yet. This method will probably never make the official FAQ, but it will always be online in gzipped form at
http://www.panix.com/~tneff/mailman20_edit_patch.gz First, increase ADMINDB_PAGE_TEXT_LIMIT in Mailman/Defaults.py from the default of 4096 to something bigger like 32768 or -1 for unlimited (a huge submission may render slowly in the browser!). Then apply this two-part patch. *** 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], '-') ------------------------------------------------------ Mailman-Users mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://www.python.org/cgi-bin/faqw-mm.py