diff options
39 files changed, 77 insertions, 259 deletions
diff --git a/mailman/Archiver/HyperArch.py b/mailman/Archiver/HyperArch.py index a376279cb..52a0bfa50 100644 --- a/mailman/Archiver/HyperArch.py +++ b/mailman/Archiver/HyperArch.py @@ -43,7 +43,6 @@ from email.Errors import HeaderParseError from email.Header import decode_header, make_header from locknix.lockfile import Lock -from mailman import Errors from mailman import Utils from mailman import i18n from mailman.Archiver import HyperDatabase diff --git a/mailman/Archiver/pipermail.py b/mailman/Archiver/pipermail.py index a7c4e3a98..19bc05c3f 100644 --- a/mailman/Archiver/pipermail.py +++ b/mailman/Archiver/pipermail.py @@ -17,8 +17,8 @@ __version__ = '0.11 (Mailman edition)' VERSION = __version__ CACHESIZE = 100 # Number of slots in the cache -from mailman import Errors from mailman.Mailbox import ArchiverMailbox +from mailman.core import errors from mailman.i18n import _ SPACE = ' ' @@ -548,7 +548,7 @@ class T: while counter < start: try: m = mbox.next() - except Errors.DiscardMessage: + except errors.DiscardMessage: continue if m is None: return @@ -557,7 +557,7 @@ class T: try: pos = input.tell() m = mbox.next() - except Errors.DiscardMessage: + except errors.DiscardMessage: continue except Exception: log.error('uncaught archiver exception at filepos: %s', pos) diff --git a/mailman/Utils.py b/mailman/Utils.py index 7975cb9d3..178fff538 100644 --- a/mailman/Utils.py +++ b/mailman/Utils.py @@ -40,10 +40,11 @@ from email.Errors import HeaderParseError from string import ascii_letters, digits, whitespace import mailman.templates -from mailman import Errors + from mailman import passwords from mailman.SafeDict import SafeDict from mailman.configuration import config +from mailman.core import errors AT = '@' CR = '\r' @@ -199,15 +200,15 @@ def ValidateEmail(s): """Verify that the an email address isn't grossly evil.""" # Pretty minimal, cheesy check. We could do better... if not s or ' ' in s: - raise Errors.InvalidEmailAddress(repr(s)) + raise errors.InvalidEmailAddress(repr(s)) if _badchars.search(s) or s[0] == '-': - raise Errors.InvalidEmailAddress(repr(s)) + raise errors.InvalidEmailAddress(repr(s)) user, domain_parts = ParseEmail(s) # Local, unqualified addresses are not allowed. if not domain_parts: - raise Errors.InvalidEmailAddress(repr(s)) + raise errors.InvalidEmailAddress(repr(s)) if len(domain_parts) < 2: - raise Errors.InvalidEmailAddress(repr(s)) + raise errors.InvalidEmailAddress(repr(s)) diff --git a/mailman/app/lifecycle.py b/mailman/app/lifecycle.py index 7095c0f9a..363ade2c4 100644 --- a/mailman/app/lifecycle.py +++ b/mailman/app/lifecycle.py @@ -17,23 +17,26 @@ """Application level list creation.""" +__metaclass__ = type +__all__ = [ + 'create_list', + 'remove_list', + ] + + import os import sys import shutil import logging -from mailman import Errors from mailman import Utils from mailman.Utils import ValidateEmail from mailman.app.plugins import get_plugin from mailman.app.styles import style_manager from mailman.configuration import config +from mailman.core import errors from mailman.interfaces import MemberRole -__all__ = [ - 'create_list', - 'remove_list', - ] log = logging.getLogger('mailman.error') @@ -47,7 +50,7 @@ def create_list(fqdn_listname, owners=None): ValidateEmail(fqdn_listname) listname, domain = Utils.split_listname(fqdn_listname) if domain not in config.domains: - raise Errors.BadDomainSpecificationError(domain) + raise errors.BadDomainSpecificationError(domain) mlist = config.db.list_manager.create(fqdn_listname) for style in style_manager.lookup(mlist): # XXX FIXME. When we get rid of the wrapper object, this hack won't diff --git a/mailman/app/membership.py b/mailman/app/membership.py index 481e55a4e..775c5cf59 100644 --- a/mailman/app/membership.py +++ b/mailman/app/membership.py @@ -28,12 +28,12 @@ __all__ = [ from email.utils import formataddr -from mailman import Errors from mailman import Message from mailman import Utils from mailman import i18n from mailman.app.notifications import send_goodbye_message from mailman.configuration import config +from mailman.core import errors from mailman.interfaces import AlreadySubscribedError, DeliveryMode, MemberRole _ = i18n._ @@ -68,7 +68,7 @@ def add_member(mlist, address, realname, password, delivery_mode, language): # confirmations. pattern = Utils.get_pattern(address, mlist.ban_list) if pattern: - raise Errors.MembershipIsBanned(pattern) + raise errors.MembershipIsBanned(pattern) # Do the actual addition. First, see if there's already a user linked # with the given address. user = config.db.user_manager.get_user(address) diff --git a/mailman/app/moderator.py b/mailman/app/moderator.py index 2483d933e..7ef454c03 100644 --- a/mailman/app/moderator.py +++ b/mailman/app/moderator.py @@ -33,7 +33,6 @@ import logging from datetime import datetime from email.utils import formataddr, formatdate, getaddresses, make_msgid -from mailman import Errors from mailman import Message from mailman import Utils from mailman import i18n @@ -41,6 +40,7 @@ from mailman.app.membership import add_member, delete_member from mailman.app.notifications import ( send_admin_subscription_notice, send_welcome_message) from mailman.configuration import config +from mailman.core import errors from mailman.interfaces import Action, DeliveryMode, RequestType from mailman.interfaces.member import AlreadySubscribedError from mailman.queue import Switchboard @@ -310,7 +310,7 @@ def handle_unsubscription(mlist, id, action, comment=None): key, data = requestdb.get_request(id) try: delete_member(mlist, address) - except Errors.NotAMemberError: + except errors.NotAMemberError: # User has already been unsubscribed. pass slog.info('%s: deleted %s', mlist.fqdn_listname, address) diff --git a/mailman/bin/__init__.py b/mailman/bin/__init__.py index eb7e7b846..4c3fc1673 100644 --- a/mailman/bin/__init__.py +++ b/mailman/bin/__init__.py @@ -20,7 +20,6 @@ __all__ = [ 'arch', 'bounces', 'bumpdigests', - 'change_pw', 'check_perms', 'checkdbs', 'cleanarch', diff --git a/mailman/bin/add_members.py b/mailman/bin/add_members.py index 98e14c5e6..613d2b322 100644 --- a/mailman/bin/add_members.py +++ b/mailman/bin/add_members.py @@ -24,7 +24,7 @@ import codecs from cStringIO import StringIO from email.utils import parseaddr -from mailman import Errors +from mailman import errors from mailman import Message from mailman import Utils from mailman import i18n @@ -122,7 +122,7 @@ def addall(mlist, subscribers, delivery_mode, ack, admin_notify, outfp): config.DEFAULT_SERVER_LANGUAGE, ack, admin_notify) except AlreadySubscribedError: print >> tee, _('Already a member: $subscriber') - except Errors.InvalidEmailAddress: + except errors.InvalidEmailAddress: if not address: print >> tee, _('Bad/Invalid email address: blank line') else: diff --git a/mailman/bin/bumpdigests.py b/mailman/bin/bumpdigests.py index 7cde0d9de..2739a0fe6 100644 --- a/mailman/bin/bumpdigests.py +++ b/mailman/bin/bumpdigests.py @@ -18,7 +18,7 @@ import sys import optparse -from mailman import Errors +from mailman import errors from mailman import MailList from mailman.configuration import config from mailman.i18n import _ @@ -58,7 +58,7 @@ def main(): try: # Be sure the list is locked mlist = MailList.MailList(listname) - except Errors.MMListError, e: + except errors.MMListError, e: parser.print_help() print >> sys.stderr, _('No such list: $listname') sys.exit(1) diff --git a/mailman/bin/change_pw.py b/mailman/bin/change_pw.py deleted file mode 100644 index e67b951d2..000000000 --- a/mailman/bin/change_pw.py +++ /dev/null @@ -1,177 +0,0 @@ -# Copyright (C) 2001-2008 by the Free Software Foundation, Inc. -# -# This file is part of GNU Mailman. -# -# GNU Mailman 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 3 of the License, or (at your option) -# any later version. -# -# GNU Mailman 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 -# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. - -from __future__ import with_statement - -import sha -import sys -import optparse - -from mailman import Errors -from mailman import MailList -from mailman import Message -from mailman import Utils -from mailman import i18n -from mailman.configuration import config -from mailman.version import MAILMAN_VERSION - -_ = i18n._ -SPACE = ' ' - - - -def parseargs(): - parser = optparse.OptionParser(version=MAILMAN_VERSION, - usage=_("""\ -%%prog [options] - -Change a list's password. - -Prior to Mailman 2.1, list passwords were kept in crypt'd format -- usually. -Some Python installations didn't have the crypt module available, so they'd -fall back to md5. Then suddenly the Python installation might grow a crypt -module and all list passwords would be broken. - -In Mailman 2.1, all list and site passwords are stored in SHA1 hexdigest -form. This breaks list passwords for all existing pre-Mailman 2.1 lists, and -since those passwords aren't stored anywhere in plain text, they cannot be -retrieved and updated. - -Thus, this script generates new passwords for a list, and optionally sends it -to all the owners of the list.""")) - parser.add_option('-a', '--all', - default=False, action='store_true', - help=_('Change the password for all lists')) - parser.add_option('-d', '--domain', - default=[], type='string', action='append', - dest='domains', help=_("""\ -Change the password for all lists in the virtual domain DOMAIN. It is okay -to give multiple -d options.""")) - parser.add_option('-l', '--listname', - default=[], type='string', action='append', - dest='listnames', help=_("""\ -Change the password only for the named list. It is okay to give multiple -l -options.""")) - parser.add_option('-p', '--password', - type='string', metavar='NEWPASSWORD', help=_("""\ -Use the supplied plain text password NEWPASSWORD as the new password for any -lists that are being changed (as specified by the -a, -d, and -l options). If -not given, lists will be assigned a randomly generated new password.""")) - parser.add_option('-q', '--quiet', - default=False, action='store_true', help=_("""\ -Don't notify list owners of the new password. You'll have to have some other -way of letting the list owners know the new password (presumably -out-of-band).""")) - parser.add_option('-C', '--config', - help=_('Alternative configuration file to use')) - opts, args = parser.parse_args() - if args: - parser.print_help() - print >> sys.stderr, _('Unexpected arguments') - sys.exit(1) - if opts.password == '': - parser.print_help() - print >> sys.stderr, _('Empty list passwords are not allowed') - sys.exit(1) - return parser, opts, args - - - -_listcache = {} -_missing = object() - -def openlist(listname): - missing = [] - mlist = _listcache.get(listname, _missing) - if mlist is _missing: - try: - mlist = MailList.MailList(listname, lock=False) - except Errors.MMListError: - print >> sys.stderr, _('No such list: $listname') - return None - _listcache[listname] = mlist - return mlist - - - -def main(): - parser, opts, args = parseargs() - config.load(opts.config) - - # Cull duplicates - domains = set(opts.domains) - listnames = set(config.list_manager.names if opts.all else opts.listnames) - - if domains: - for name in config.list_manager.names: - mlist = openlist(name) - if mlist.host_name in domains: - listnames.add(name) - - if not listnames: - print >> sys.stderr, _('Nothing to do.') - sys.exit(0) - - # Set the password on the lists - if opts.password: - shapassword = sha.new(opts.password).hexdigest() - - for listname in listnames: - mlist = openlist(listname) - mlist.Lock() - try: - if opts.password is None: - randompw = Utils.MakeRandomPassword( - config.ADMIN_PASSWORD_LENGTH) - shapassword = sha.new(randompw).hexdigest() - notifypassword = randompw - else: - notifypassword = opts.password - - mlist.password = shapassword - mlist.Save() - finally: - mlist.Unlock() - - # Notification - print _('New $listname password: $notifypassword') - if not opts.quiet: - with i18n.using_language(mlist.preferred_language): - hostname = mlist.host_name - adminurl = mlist.GetScriptURL('admin', absolute=True) - msg = Message.UserNotification( - mlist.owner[:], mlist.no_reply_address, - _('Your new $listname list password'), - _('''\ -The site administrator at $hostname has changed the password for your -mailing list $listname. It is now - - $notifypassword - -Please be sure to use this for all future list administration. You may want -to log in now to your list and change the password to something more to your -liking. Visit your list admin page at - - $adminurl -'''), - mlist.preferred_language) - msg.send(mlist) - - - -if __name__ == '__main__': - main() diff --git a/mailman/bin/config_list.py b/mailman/bin/config_list.py index 814b9640c..7fb3e73a7 100644 --- a/mailman/bin/config_list.py +++ b/mailman/bin/config_list.py @@ -20,7 +20,7 @@ import sys import time import optparse -from mailman import Errors +from mailman import errors from mailman import MailList from mailman import Utils from mailman import i18n @@ -97,7 +97,7 @@ def do_output(listname, outfile, parser): # Open the specified list unlocked, since we're only reading it. try: mlist = MailList.MailList(listname, lock=False) - except Errors.MMListError: + except errors.MMListError: parser.error(_('No such list: $listname')) # Preamble for the config info. PEP 263 charset and capture time. language = mlist.preferred_language @@ -246,7 +246,7 @@ def do_input(listname, infile, checkonly, verbose, parser): # Open the specified list locked, unless checkonly is set try: mlist = MailList.MailList(listname, lock=not checkonly) - except Errors.MMListError, e: + except errors.MMListError, e: parser.error(_('No such list "$listname"\n$e')) savelist = False guibyprop = getPropertyMap(mlist) @@ -278,7 +278,7 @@ def do_input(listname, infile, checkonly, verbose, parser): validval = gui._getValidValue(mlist, k, wtype, v) except ValueError: print >> sys.stderr, _('Invalid value for property: $k') - except Errors.EmailAddressError: + except errors.EmailAddressError: print >> sys.stderr, _( 'Bad email address for option $k: $v') else: diff --git a/mailman/bin/create_list.py b/mailman/bin/create_list.py index f581184dc..c25ab3283 100644 --- a/mailman/bin/create_list.py +++ b/mailman/bin/create_list.py @@ -19,7 +19,7 @@ from __future__ import with_statement import sys -from mailman import Errors +from mailman import errors from mailman import Message from mailman import Utils from mailman import i18n @@ -100,11 +100,11 @@ def main(): try: mlist = create_list(fqdn_listname, options.options.owners) mlist.preferred_language = options.options.language - except Errors.InvalidEmailAddress: + except errors.InvalidEmailAddress: options.parser.error(_('Illegal list name: $fqdn_listname')) except ListAlreadyExistsError: options.parser.error(_('List already exists: $fqdn_listname')) - except Errors.BadDomainSpecificationError, domain: + except errors.BadDomainSpecificationError, domain: options.parser.error(_('Undefined domain: $domain')) config.db.commit() diff --git a/mailman/bin/disabled.py b/mailman/bin/disabled.py index ae57757f1..31fd0c014 100644 --- a/mailman/bin/disabled.py +++ b/mailman/bin/disabled.py @@ -19,7 +19,7 @@ import time import logging import optparse -from mailman import Errors +from mailman import errors from mailman import MailList from mailman import MemberAdaptor from mailman import Pending @@ -183,7 +183,7 @@ def main(): member, mlist.internal_name()) try: mlist.sendNextNotification(member) - except Errors.NotAMemberError: + except errors.NotAMemberError: # There must have been some problem with the data we have # on this member. Most likely it's that they don't have a # password assigned. Log this and delete the member. diff --git a/mailman/bin/export.py b/mailman/bin/export.py index 1834205e7..e494d5a8d 100644 --- a/mailman/bin/export.py +++ b/mailman/bin/export.py @@ -29,7 +29,7 @@ import optparse from xml.sax.saxutils import escape from mailman import Defaults -from mailman import Errors +from mailman import errors from mailman import MemberAdaptor from mailman.MailList import MailList from mailman.configuration import config @@ -247,7 +247,7 @@ class XMLDumper(object): for listname in sorted(listnames): try: mlist = MailList(listname, lock=False) - except Errors.MMUnknownListError: + except errors.MMUnknownListError: print >> sys.stderr, _('No such list: $listname') continue self._dump_list(mlist) diff --git a/mailman/bin/find_member.py b/mailman/bin/find_member.py index e605767a7..605e243b4 100644 --- a/mailman/bin/find_member.py +++ b/mailman/bin/find_member.py @@ -19,7 +19,7 @@ import re import sys import optparse -from mailman import Errors +from mailman import errors from mailman import MailList from mailman.configuration import config from mailman.i18n import _ @@ -93,7 +93,7 @@ def main(): for listname in listnames: try: mlist = MailList.MailList(listname, lock=False) - except Errors.MMListError: + except errors.MMListError: print _('No such list: $listname') continue if opts.owners: diff --git a/mailman/bin/import.py b/mailman/bin/import.py index 51dffceb9..2617cca99 100644 --- a/mailman/bin/import.py +++ b/mailman/bin/import.py @@ -26,7 +26,7 @@ from xml.dom import minidom from xml.parsers.expat import ExpatError from mailman import Defaults -from mailman import Errors +from mailman import errors from mailman import MemberAdaptor from mailman import Utils from mailman import passwords @@ -202,7 +202,7 @@ def create(all_listdata): print _('Creating mailing list: $fqdn_listname') mlist.Create(fqdn_listname, list_config['owner'][0], list_config['password']) - except Errors.BadDomainSpecificationError: + except errors.BadDomainSpecificationError: print _('List is not in a supported domain: $fqdn_listname') continue # Save the list creation, then unlock and relock the list. This is so diff --git a/mailman/bin/list_members.py b/mailman/bin/list_members.py index 31bc61b0c..a5b047504 100644 --- a/mailman/bin/list_members.py +++ b/mailman/bin/list_members.py @@ -19,7 +19,7 @@ import sys from email.Utils import formataddr -from mailman import Errors +from mailman import errors from mailman import Utils from mailman.configuration import config from mailman.i18n import _ @@ -120,7 +120,7 @@ def isinvalid(addr): try: Utils.ValidateEmail(addr) return False - except Errors.EmailAddressError: + except errors.EmailAddressError: return True diff --git a/mailman/bin/remove_list.py b/mailman/bin/remove_list.py index 76db51f2d..b83c56bbf 100644 --- a/mailman/bin/remove_list.py +++ b/mailman/bin/remove_list.py @@ -19,7 +19,6 @@ import os import sys import shutil -from mailman import Errors from mailman import Utils from mailman.app.lifecycle import remove_list from mailman.configuration import config diff --git a/mailman/bin/withlist.py b/mailman/bin/withlist.py index daf009ca3..32bfb1206 100644 --- a/mailman/bin/withlist.py +++ b/mailman/bin/withlist.py @@ -19,7 +19,6 @@ import os import sys import optparse -from mailman import Errors from mailman import interact from mailman.configuration import config from mailman.i18n import _ @@ -105,7 +104,7 @@ As another example, say you wanted to change the password for a particular user on a particular list. You could put the following function in a file called 'changepw.py': - from mailman.Errors import NotAMemberError + from mailman.errors import NotAMemberError def changepw(mlist, addr, newpasswd): try: diff --git a/mailman/configuration.py b/mailman/configuration.py index 1c4612f32..070f82085 100644 --- a/mailman/configuration.py +++ b/mailman/configuration.py @@ -22,8 +22,8 @@ import sys import errno from mailman import Defaults -from mailman import Errors from mailman import version +from mailman.core import errors from mailman.domain import Domain from mailman.languages import LanguageManager @@ -184,11 +184,11 @@ class Configuration(object): """ domain = Domain(*args, **kws) if domain.email_host in self.domains: - raise Errors.BadDomainSpecificationError( + raise errors.BadDomainSpecificationError( 'Duplicate email host: %s' % domain.email_host) # Make sure there's only one mapping for the url_host if domain.url_host in self.domains.values(): - raise Errors.BadDomainSpecificationError( + raise errors.BadDomainSpecificationError( 'Duplicate url host: %s' % domain.url_host) # We'll do the reverse mappings on-demand. There shouldn't be too # many virtual hosts that it will really matter that much. diff --git a/mailman/core/__init__.py b/mailman/core/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/mailman/core/__init__.py diff --git a/mailman/Errors.py b/mailman/core/errors.py index 91e724195..91e724195 100644 --- a/mailman/Errors.py +++ b/mailman/core/errors.py diff --git a/mailman/database/listmanager.py b/mailman/database/listmanager.py index 1fb416203..c4cebce4c 100644 --- a/mailman/database/listmanager.py +++ b/mailman/database/listmanager.py @@ -21,7 +21,6 @@ import datetime from zope.interface import implements -from mailman import Errors from mailman.Utils import split_listname, fqdn_listname from mailman.configuration import config from mailman.database.mailinglist import MailingList diff --git a/mailman/docs/bounces.txt b/mailman/docs/bounces.txt index 671e43a22..ff110c509 100644 --- a/mailman/docs/bounces.txt +++ b/mailman/docs/bounces.txt @@ -72,7 +72,7 @@ An error message can be given when the message is bounced, and this will be included in the payload of the text/plain part. The error message must be passed in as an instance of a RejectMessage exception. - >>> from mailman.Errors import RejectMessage + >>> from mailman.core.errors import RejectMessage >>> error = RejectMessage("This wasn't very important after all.") >>> bounce_message(mlist, msg, error) >>> len(switchboard.files) diff --git a/mailman/interfaces/member.py b/mailman/interfaces/member.py index a5e1caf07..009b18c91 100644 --- a/mailman/interfaces/member.py +++ b/mailman/interfaces/member.py @@ -31,7 +31,7 @@ __all__ = [ from munepy import Enum from zope.interface import Interface, Attribute -from mailman.Errors import SubscriptionError +from mailman.core.errors import SubscriptionError diff --git a/mailman/passwords.py b/mailman/passwords.py index b353e7710..65bf8de05 100644 --- a/mailman/passwords.py +++ b/mailman/passwords.py @@ -30,7 +30,7 @@ from base64 import urlsafe_b64decode as decode from base64 import urlsafe_b64encode as encode from munepy import Enum -from mailman import Errors +from mailman.core import errors SALT_LENGTH = 20 # bytes ITERATIONS = 2000 @@ -221,7 +221,7 @@ def make_secret(password, scheme=None): password = password.encode('utf-8') scheme_class = _SCHEMES_BY_ENUM.get(scheme) if not scheme_class: - raise Errors.BadPasswordSchemeError(scheme) + raise errors.BadPasswordSchemeError(scheme) secret = scheme_class.make_secret(password) return '{%s}%s' % (scheme_class.TAG, secret) diff --git a/mailman/pipeline/acknowledge.py b/mailman/pipeline/acknowledge.py index a7e6f2ce8..41fc931ae 100644 --- a/mailman/pipeline/acknowledge.py +++ b/mailman/pipeline/acknowledge.py @@ -26,7 +26,6 @@ __all__ = ['Acknowledge'] from zope.interface import implements -from mailman import Errors from mailman import Message from mailman import Utils from mailman.configuration import config diff --git a/mailman/pipeline/calculate_recipients.py b/mailman/pipeline/calculate_recipients.py index a7e5f1521..f892435cd 100644 --- a/mailman/pipeline/calculate_recipients.py +++ b/mailman/pipeline/calculate_recipients.py @@ -28,10 +28,10 @@ __all__ = ['CalculateRecipients'] from zope.interface import implements -from mailman import Errors from mailman import Message from mailman import Utils from mailman.configuration import config +from mailman.core import errors from mailman.i18n import _ from mailman.interfaces import DeliveryStatus, IHandler @@ -83,7 +83,7 @@ class CalculateRecipients: Your urgent message to the %(realname)s mailing list was not authorized for delivery. The original message as received by Mailman is attached. """) - raise Errors.RejectMessage, Utils.wrap(text) + raise errors.RejectMessage, Utils.wrap(text) # Calculate the regular recipients of the message recips = set(member.address.address for member in mlist.regular_members.members diff --git a/mailman/pipeline/decorate.py b/mailman/pipeline/decorate.py index a9f20f4d8..3e9c6360b 100644 --- a/mailman/pipeline/decorate.py +++ b/mailman/pipeline/decorate.py @@ -28,7 +28,6 @@ from email.MIMEText import MIMEText from string import Template from zope.interface import implements -from mailman import Errors from mailman import Utils from mailman.Message import Message from mailman.configuration import config diff --git a/mailman/pipeline/file_recipients.py b/mailman/pipeline/file_recipients.py index 3ca13b6e1..5f47059d3 100644 --- a/mailman/pipeline/file_recipients.py +++ b/mailman/pipeline/file_recipients.py @@ -28,7 +28,6 @@ import errno from zope.interface import implements -from mailman import Errors from mailman.i18n import _ from mailman.interfaces import IHandler diff --git a/mailman/pipeline/mime_delete.py b/mailman/pipeline/mime_delete.py index bfcdd39a9..9cb34297f 100644 --- a/mailman/pipeline/mime_delete.py +++ b/mailman/pipeline/mime_delete.py @@ -37,14 +37,14 @@ from email.Iterators import typed_subpart_iterator from os.path import splitext from zope.interface import implements -from mailman import Errors from mailman.Message import UserNotification from mailman.Utils import oneline -from mailman.version import VERSION from mailman.configuration import config +from mailman.core import errors from mailman.i18n import _ from mailman.interfaces import IHandler from mailman.queue import Switchboard +from mailman.version import VERSION log = logging.getLogger('mailman.error') @@ -231,7 +231,7 @@ def dispose(mlist, msg, msgdata, why): # filter_action == 0 just discards, see below if mlist.filter_action == 1: # Bounce the message to the original author - raise Errors.RejectMessage, why + raise errors.RejectMessage, why if mlist.filter_action == 2: # Forward it on to the list owner listname = mlist.internal_name() @@ -249,7 +249,7 @@ are receiving the only remaining copy of the discarded message. badq = Switchboard(config.BADQUEUE_DIR) badq.enqueue(msg, msgdata) # Most cases also discard the message - raise Errors.DiscardMessage + raise errors.DiscardMessage def get_file_ext(m): """ diff --git a/mailman/pipeline/moderate.py b/mailman/pipeline/moderate.py index 0463a5e9b..11471dd3a 100644 --- a/mailman/pipeline/moderate.py +++ b/mailman/pipeline/moderate.py @@ -22,10 +22,10 @@ import re from email.MIMEMessage import MIMEMessage from email.MIMEText import MIMEText -from mailman import Errors from mailman import Message from mailman import Utils from mailman.configuration import config +from mailman.core import errors from mailman.i18n import _ @@ -72,11 +72,11 @@ def process(mlist, msg, msgdata): else: # Use the default RejectMessage notice string text = None - raise Errors.RejectMessage, text + raise errors.RejectMessage, text elif mlist.member_moderation_action == 2: # Discard. BAW: Again, it would be nice if we could send a # discard notice to the sender - raise Errors.DiscardMessage + raise errors.DiscardMessage else: assert 0, 'bad member_moderation_action' # Should we do anything explict to mark this message as getting past @@ -135,10 +135,10 @@ def matches_p(sender, nonmembers): def do_reject(mlist): listowner = mlist.GetOwnerEmail() if mlist.nonmember_rejection_notice: - raise Errors.RejectMessage, \ + raise errors.RejectMessage, \ Utils.wrap(_(mlist.nonmember_rejection_notice)) else: - raise Errors.RejectMessage, Utils.wrap(_("""\ + raise errors.RejectMessage, Utils.wrap(_("""\ You are not allowed to post to this mailing list, and your message has been automatically rejected. If you think that your messages are being rejected in error, contact the mailing list owner at %(listowner)s.""")) @@ -164,4 +164,4 @@ def do_discard(mlist, msg): nmsg.attach(MIMEMessage(msg)) nmsg.send(mlist) # Discard this sucker - raise Errors.DiscardMessage + raise errors.DiscardMessage diff --git a/mailman/pipeline/scrubber.py b/mailman/pipeline/scrubber.py index f6187a1cd..a538de1e9 100644 --- a/mailman/pipeline/scrubber.py +++ b/mailman/pipeline/scrubber.py @@ -39,9 +39,9 @@ from mimetypes import guess_all_extensions from zope.interface import implements from mailman import Utils -from mailman.Errors import DiscardMessage from mailman.app.plugins import get_plugin from mailman.configuration import config +from mailman.core.errors import DiscardMessage from mailman.i18n import _ from mailman.interfaces import IHandler diff --git a/mailman/pipeline/smtp_direct.py b/mailman/pipeline/smtp_direct.py index 447c61c8b..7d9242417 100644 --- a/mailman/pipeline/smtp_direct.py +++ b/mailman/pipeline/smtp_direct.py @@ -43,9 +43,9 @@ from email.Header import Header from email.Utils import formataddr from zope.interface import implements -from mailman import Errors from mailman import Utils from mailman.configuration import config +from mailman.core import errors from mailman.i18n import _ from mailman.interfaces import IHandler, Personalization @@ -254,7 +254,7 @@ def process(mlist, msg, msgdata): failure_log.info('%s', template.safe_substitute(substitutions)) # Return the results if tempfailures or permfailures: - raise Errors.SomeRecipientsFailed(tempfailures, permfailures) + raise errors.SomeRecipientsFailed(tempfailures, permfailures) diff --git a/mailman/pipeline/to_digest.py b/mailman/pipeline/to_digest.py index d8d4ac669..7c868fe74 100644 --- a/mailman/pipeline/to_digest.py +++ b/mailman/pipeline/to_digest.py @@ -48,16 +48,16 @@ from email.parser import Parser from email.utils import formatdate, getaddresses, make_msgid from zope.interface import implements -from mailman import Errors from mailman import Message from mailman import Utils from mailman import i18n from mailman.Mailbox import Mailbox from mailman.Mailbox import Mailbox from mailman.configuration import config +from mailman.core import errors +from mailman.interfaces import DeliveryMode, DeliveryStatus, IHandler from mailman.pipeline.decorate import decorate from mailman.pipeline.scrubber import process as scrubber -from mailman.interfaces import DeliveryMode, DeliveryStatus, IHandler from mailman.queue import Switchboard @@ -321,7 +321,7 @@ def send_i18n_digests(mlist, mboxfp): # Use Mailman.pipeline.scrubber.process() to get plain text try: msg = scrubber(mlist, msg) - except Errors.DiscardMessage: + except errors.DiscardMessage: print >> plainmsg, _('[Message discarded by content filter]') continue # Honor the default setting diff --git a/mailman/queue/outgoing.py b/mailman/queue/outgoing.py index 42b2d71db..624368930 100644 --- a/mailman/queue/outgoing.py +++ b/mailman/queue/outgoing.py @@ -26,9 +26,9 @@ import logging from datetime import datetime -from mailman import Errors from mailman import Message from mailman.configuration import config +from mailman.core import errors from mailman.queue import Runner, Switchboard from mailman.queue.bounce import BounceMixin @@ -82,7 +82,7 @@ class OutgoingRunner(Runner, BounceMixin): config.SMTPHOST, port) self._logged = True return True - except Errors.SomeRecipientsFailed, e: + except errors.SomeRecipientsFailed, e: # Handle local rejects of probe messages differently. if msgdata.get('probe_token') and e.permfailures: self._probe_bounce(mlist, msgdata['probe_token']) diff --git a/mailman/tests/test_membership.py b/mailman/tests/test_membership.py index dca7e020b..062520665 100644 --- a/mailman/tests/test_membership.py +++ b/mailman/tests/test_membership.py @@ -23,9 +23,9 @@ import unittest from mailman import Utils from mailman import passwords -from mailman.Errors import NotAMemberError from mailman.UserDesc import UserDesc from mailman.configuration import config +from mailman.core.errors import NotAMemberError diff --git a/mailman/tests/test_passwords.py b/mailman/tests/test_passwords.py index 3c539c77b..7c9b9671e 100644 --- a/mailman/tests/test_passwords.py +++ b/mailman/tests/test_passwords.py @@ -19,8 +19,8 @@ import unittest -from mailman import Errors from mailman import passwords +from mailman.core import errors @@ -73,19 +73,19 @@ class TestBogusPasswords(TestPasswordsBase): scheme = -1 def test_passwords(self): - self.assertRaises(Errors.BadPasswordSchemeError, + self.assertRaises(errors.BadPasswordSchemeError, passwords.make_secret, self.pw8a, self.scheme) def test_unicode_passwords(self): - self.assertRaises(Errors.BadPasswordSchemeError, + self.assertRaises(errors.BadPasswordSchemeError, passwords.make_secret, self.pwua, self.scheme) def test_passwords_with_funky_chars(self): - self.assertRaises(Errors.BadPasswordSchemeError, + self.assertRaises(errors.BadPasswordSchemeError, passwords.make_secret, self.pw8b, self.scheme) def test_unicode_passwords_with_funky_chars(self): - self.assertRaises(Errors.BadPasswordSchemeError, + self.assertRaises(errors.BadPasswordSchemeError, passwords.make_secret, self.pwub, self.scheme) diff --git a/mailman/tests/test_security_mgr.py b/mailman/tests/test_security_mgr.py index 2b5cd20c3..3dde9dd2a 100644 --- a/mailman/tests/test_security_mgr.py +++ b/mailman/tests/test_security_mgr.py @@ -27,7 +27,6 @@ import unittest # Don't use cStringIO because we're going to inherit from StringIO import StringIO -from mailman import Errors from mailman import Utils from mailman import passwords from mailman.configuration import config |
