summaryrefslogtreecommitdiff
path: root/modules/Cgi/admindb.py
diff options
context:
space:
mode:
authorbwarsaw1998-06-19 19:33:41 +0000
committerbwarsaw1998-06-19 19:33:41 +0000
commit9a7f36b1a8820a8abf8046755dd1d0ad5a201d0e (patch)
treeb4b51ff26957d8b402cad1e84df7f745d3245cf0 /modules/Cgi/admindb.py
parent99f721f65906e4f2d1036da3a886426aa0ec5aea (diff)
downloadmailman-9a7f36b1a8820a8abf8046755dd1d0ad5a201d0e.tar.gz
mailman-9a7f36b1a8820a8abf8046755dd1d0ad5a201d0e.tar.zst
mailman-9a7f36b1a8820a8abf8046755dd1d0ad5a201d0e.zip
Diffstat (limited to 'modules/Cgi/admindb.py')
-rwxr-xr-xmodules/Cgi/admindb.py232
1 files changed, 0 insertions, 232 deletions
diff --git a/modules/Cgi/admindb.py b/modules/Cgi/admindb.py
deleted file mode 100755
index 415184d3b..000000000
--- a/modules/Cgi/admindb.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#! /usr/bin/env python
-#
-# Copyright (C) 1998 by the Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-"""Produce and process the pending-approval items for a list."""
-
-import sys
-import os, cgi, string, crypt, types
-import mm_utils, maillist, mm_err, htmlformat
-
-doc = htmlformat.Document()
-
-path = os.environ['PATH_INFO']
-list_info = mm_utils.GetPathPieces(path)
-
-
-if len(list_info) < 1:
- doc.SetTitle("Admindb Error")
- doc.AddItem(htmlformat.Header(2, "Invalid options to CGI script."))
- print doc.Format(bgcolor="#ffffff")
- sys.exit(0)
-list_name = string.lower(list_info[0])
-
-try:
- list = maillist.MailList(list_name)
-except:
- msg = "%s: No such list." % list_name
- doc.SetTitle("Admindb Error - %s" % msg)
- doc.AddItem(htmlformat.Header(2, msg))
- print doc.Format(bgcolor="#ffffff")
- sys.exit(0)
-
-if not list._ready:
- msg = "%s: No such list." % list_name
- doc.SetTitle("Admindb Error - %s" % msg)
- doc.AddItem(htmlformat.Header(2, msg))
- print doc.Format(bgcolor="#ffffff")
- sys.exit(0)
-
-# Note, these 2 functions use i only to count the number of times to
-# go around. We always operate on the first element of the list
-# because we're going to delete the element after we operate on it.
-
-def SubscribeAll():
- for i in range(len(list.requests['add_member'])):
- comment_key = 'comment-%d' % list.requests['add_member'][0][0]
- if form.has_key(comment_key):
- list.HandleRequest(('add_member', 0), 1, form[comment_key].value)
- else:
- list.HandleRequest(('add_member', 0), 1)
-
-def SubscribeNone():
- for i in range(len(list.requests['add_member'])):
- comment_key = 'comment-%d' % list.requests['add_member'][0][0]
- if form.has_key(comment_key):
- list.HandleRequest(('add_member', 0), 0, form[comment_key].value)
- else:
- list.HandleRequest(('add_member', 0), 0)
-
-def PrintHeader(str, error=0):
- if error:
- it = htmlformat.FontAttr(str, color="ff5060")
- else:
- it = str
- doc.AddItem(htmlformat.Header(3, htmlformat.Italic(it)))
- doc.AddItem('<hr>')
-
-def HandleRequests(doc):
- if not form.has_key('adminpw'):
- PrintHeader('You need to supply the admin password '
- 'to answer requests.', error=1)
- return
- try:
- list.ConfirmAdminPassword(form['adminpw'].value)
- except:
- PrintHeader('Incorrect admin password.', error=1)
- return
- ignore_subscribes = 0
- if form.has_key('subscribe_all'):
- ignore_subscribes = 1
- SubscribeAll()
- elif form.has_key('subscribe_none'):
- ignore_subscribes = 1
- SubscribeNone()
- for k in form.keys():
- try:
- # XXX Security?!
- v = eval(form[k].value)
- request_id = eval(k)
- except: # For stuff like adminpw
- continue
- if type(request_id) <> types.IntType:
- continue
- try:
- request = list.GetRequest(request_id)
- except mm_err.MMBadRequestId:
- continue # You've already changed the database. No biggie.
- if ignore_subscribes and request[0] == 'add_member':
- # We already handled this request.
- continue
- comment_key = 'comment-%d' % request_id
- if form.has_key(comment_key):
- list.HandleRequest(request, v, form[comment_key].value)
- else:
- list.HandleRequest(request, v)
- list.Save()
- PrintHeader('Database Updated...')
-
-
-def PrintAddMemberRequest(val, table):
- table.AddRow([
- val[3],
- htmlformat.RadioButtonArray(val[0], ("Refuse", "Subscribe")),
- htmlformat.TextBox("comment-%d" % val[0], size=50)
- ])
-
-def PrintPostRequest(val, form):
- t = htmlformat.Table(cellspacing=10)
- t.AddRow([
- htmlformat.FontSize("+1",
- htmlformat.Bold('Post held because: ')),
- val[3]])
- t.AddRow([
- htmlformat.FontSize("+1",
- htmlformat.Bold('Action to take on this post:')),
- htmlformat.RadioButtonArray(val[0], ("Approve", "Reject",
- "Discard (eg, spam)")),
- htmlformat.SubmitButton('submit', 'Submit All Data')
- ])
- t.AddRow([
- htmlformat.FontSize("+1",
- htmlformat.Bold('If you reject this post, '
- 'explain (optional):')),
- htmlformat.TextBox("comment-%d" % val[0], size=50)])
-
- cur_row = t.GetCurrentRowIndex()
- cur_col = t.GetCurrentCellIndex()
- t.AddCellInfo(cur_row, cur_col, colspan=3)
-
- t.AddRow([
- htmlformat.FontSize("+1",
- htmlformat.Bold('Contents:'))])
- form.AddItem(t)
- form.AddItem(htmlformat.Preformatted(val[2][1]))
- form.AddItem('<p>')
-
-
-def PrintRequests(doc):
- # The only types of requests we know about are add_member and post.
- # Anything else that might have gotten in here somehow we'll just
- # ignore (This should never happen unless someone is hacking at
- # the code).
-
- doc.AddItem(htmlformat.Header(2, "Administrative requests for "
- "'%s' mailing list" % list.real_name))
- doc.AddItem(htmlformat.FontSize("+1", htmlformat.Link(
- list.GetRelativeScriptURL('admin'), htmlformat.Italic(
- 'View or edit the list configuration information'))))
- doc.AddItem('<p><hr>')
- if not list.RequestsPending():
- doc.AddItem(htmlformat.Header(3,'There are no pending requests.'))
- doc.AddItem(list.GetMailmanFooter())
- return
- form = htmlformat.Form(list.GetRelativeScriptURL('admindb'))
- doc.AddItem(form)
- form.AddItem('Admin password: ')
- form.AddItem(htmlformat.PasswordBox('adminpw'))
- form.AddItem('<p>')
- if list.requests.has_key('add_member'):
-## form.AddItem('<hr>')
-## t = htmlformat.Table(cellspacing=10)
-## t.AddRow([
-## htmlformat.SubmitButton('submit', 'Submit All Data'),
-## htmlformat.SubmitButton('subscribe_all', 'Subscribe Everybody'),
-## htmlformat.SubmitButton('subscribe_none', 'Refuse Everybody')
-## ])
-## form.AddItem(t)
- form.AddItem('<hr>')
- form.AddItem(htmlformat.Center(
- htmlformat.Header(2, 'Subscription Requests')))
- t = htmlformat.Table(border=2)
- t.AddRow([
- htmlformat.Bold('Email'),
- htmlformat.Bold('Descision'),
- htmlformat.Bold('Reasoning for subscription refusal (optional)')])
- for request in list.requests['add_member']:
- PrintAddMemberRequest(request, t)
-
- form.AddItem(t)
- t = htmlformat.Table(cellspacing=10)
- t.AddRow([
- htmlformat.SubmitButton('submit', 'Submit All Data'),
- htmlformat.SubmitButton('subscribe_all', 'Subscribe Everybody'),
- htmlformat.SubmitButton('subscribe_none', 'Refuse Everybody')
- ])
- form.AddItem(t)
-
- # Print submitit buttons...
- if list.requests.has_key('post'):
- for request in list.requests['post']:
- form.AddItem('<hr>')
- form.AddItem(htmlformat.Center(htmlformat.Header(2, "Held Message")))
- PrintPostRequest(request, form)
- doc.AddItem(list.GetMailmanFooter())
-
-try:
- form = cgi.FieldStorage()
- if len(form.keys()):
- doc.SetTitle("%s Admindb Results" % list.real_name)
- HandleRequests(doc)
- else:
- doc.SetTitle("%s Admindb" % list.real_name)
- PrintRequests(doc)
- text = doc.Format(bgcolor="#ffffff")
- print text
- sys.stdout.flush()
-finally:
- list.Unlock()