diff options
Diffstat (limited to 'Mailman/database')
| -rw-r--r-- | Mailman/database/__init__.py | 3 | ||||
| -rw-r--r-- | Mailman/database/listmanager.py | 19 | ||||
| -rw-r--r-- | Mailman/database/user.py | 16 | ||||
| -rw-r--r-- | Mailman/database/usermanager.py | 5 |
4 files changed, 26 insertions, 17 deletions
diff --git a/Mailman/database/__init__.py b/Mailman/database/__init__.py index f6fda8494..7ca60f145 100644 --- a/Mailman/database/__init__.py +++ b/Mailman/database/__init__.py @@ -31,7 +31,6 @@ from string import Template from urlparse import urlparse from zope.interface import implements -from Mailman.Errors import SchemaVersionMismatchError from Mailman.configuration import config from Mailman.database.listmanager import ListManager from Mailman.database.messagestore import MessageStore @@ -39,7 +38,7 @@ from Mailman.database.pending import Pendings from Mailman.database.requests import Requests from Mailman.database.usermanager import UserManager from Mailman.database.version import Version -from Mailman.interfaces import IDatabase +from Mailman.interfaces import IDatabase, SchemaVersionMismatchError diff --git a/Mailman/database/listmanager.py b/Mailman/database/listmanager.py index a79cbf565..7b02767c7 100644 --- a/Mailman/database/listmanager.py +++ b/Mailman/database/listmanager.py @@ -25,30 +25,31 @@ from Mailman import Errors from Mailman.Utils import split_listname, fqdn_listname from Mailman.configuration import config from Mailman.database.mailinglist import MailingList -from Mailman.interfaces import IListManager +from Mailman.interfaces import IListManager, ListAlreadyExistsError class ListManager(object): + """An implementation of the `IListManager` interface.""" + implements(IListManager) def create(self, fqdn_listname): + """See `IListManager`.""" listname, hostname = split_listname(fqdn_listname) mlist = config.db.store.find( MailingList, MailingList.list_name == listname, MailingList.host_name == hostname).one() if mlist: - raise Errors.MMListAlreadyExistsError(fqdn_listname) + raise ListAlreadyExistsError(fqdn_listname) mlist = MailingList(fqdn_listname) mlist.created_at = datetime.datetime.now() config.db.store.add(mlist) return mlist - def delete(self, mlist): - config.db.store.remove(mlist) - def get(self, fqdn_listname): + """See `IListManager`.""" listname, hostname = split_listname(fqdn_listname) mlist = config.db.store.find(MailingList, list_name=listname, @@ -58,14 +59,18 @@ class ListManager(object): mlist._restore() return mlist + def delete(self, mlist): + """See `IListManager`.""" + config.db.store.remove(mlist) + @property def mailing_lists(self): - # Don't forget, the MailingList objects that this class manages must - # be wrapped in a MailList object as expected by this interface. + """See `IListManager`.""" for fqdn_listname in self.names: yield self.get(fqdn_listname) @property def names(self): + """See `IListManager`.""" for mlist in config.db.store.find(MailingList): yield fqdn_listname(mlist.list_name, mlist.host_name) diff --git a/Mailman/database/user.py b/Mailman/database/user.py index d9c87ada0..65a3c92f8 100644 --- a/Mailman/database/user.py +++ b/Mailman/database/user.py @@ -19,16 +19,18 @@ from email.utils import formataddr from storm.locals import * from zope.interface import implements -from Mailman import Errors from Mailman.configuration import config from Mailman.database.model import Model from Mailman.database.address import Address from Mailman.database.preferences import Preferences -from Mailman.interfaces import IUser +from Mailman.interfaces import ( + AddressAlreadyLinkedError, AddressNotLinkedError, IUser) class User(Model): + """Mailman users.""" + implements(IUser) id = Int(primary=True) @@ -43,16 +45,19 @@ class User(Model): return '<User "%s" at %#x>' % (self.real_name, id(self)) def link(self, address): + """See `IUser`.""" if address.user is not None: - raise Errors.AddressAlreadyLinkedError(address) + raise AddressAlreadyLinkedError(address) address.user = self def unlink(self, address): + """See `IUser`.""" if address.user is None: - raise Errors.AddressNotLinkedError(address) + raise AddressNotLinkedError(address) address.user = None def controls(self, address): + """See `IUser`.""" found = config.db.store.find(Address, address=address) if found.count() == 0: return False @@ -60,6 +65,7 @@ class User(Model): return found[0].user is self def register(self, address, real_name=None): + """See `IUser`.""" # First, see if the address already exists addrobj = config.db.store.find(Address, address=address).one() if addrobj is None: @@ -69,6 +75,6 @@ class User(Model): addrobj.preferences = Preferences() # Link the address to the user if it is not already linked. if addrobj.user is not None: - raise Errors.AddressAlreadyLinkedError(addrobj) + raise AddressAlreadyLinkedError(addrobj) addrobj.user = self return addrobj diff --git a/Mailman/database/usermanager.py b/Mailman/database/usermanager.py index d5b7003dc..315e362d7 100644 --- a/Mailman/database/usermanager.py +++ b/Mailman/database/usermanager.py @@ -23,12 +23,11 @@ import os from zope.interface import implements -from Mailman import Errors from Mailman.configuration import config from Mailman.database.address import Address from Mailman.database.preferences import Preferences from Mailman.database.user import User -from Mailman.interfaces import IUserManager +from Mailman.interfaces import ExistingAddressError, IUserManager @@ -67,7 +66,7 @@ class UserManager(object): addresses = config.db.store.find(Address, address=address.lower()) if addresses.count() == 1: found = addresses[0] - raise Errors.ExistingAddressError(found.original_address) + raise ExistingAddressError(found.original_address) assert addresses.count() == 0, 'Unexpected results' if real_name is None: real_name = u'' |
