summaryrefslogtreecommitdiff
path: root/Mailman/database
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/database')
-rw-r--r--Mailman/database/__init__.py3
-rw-r--r--Mailman/database/listmanager.py19
-rw-r--r--Mailman/database/user.py16
-rw-r--r--Mailman/database/usermanager.py5
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''