summaryrefslogtreecommitdiff
path: root/src/mailman/model/usermanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/model/usermanager.py')
-rw-r--r--src/mailman/model/usermanager.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mailman/model/usermanager.py b/src/mailman/model/usermanager.py
index 24b3a355e..6f5d5b774 100644
--- a/src/mailman/model/usermanager.py
+++ b/src/mailman/model/usermanager.py
@@ -19,7 +19,9 @@
from mailman.database.transaction import dbconnection
from mailman.interfaces.address import ExistingAddressError
-from mailman.interfaces.usermanager import IUserManager
+from mailman.interfaces.usermanager import (
+ AddressCreatedEvent, AddressCreatingEvent, AddressDeletedEvent,
+ AddressDeletingEvent, IUserManager)
from mailman.model.address import Address
from mailman.model.autorespond import AutoResponseRecord
from mailman.model.digests import OneLastDigest
@@ -27,6 +29,7 @@ from mailman.model.member import Member
from mailman.model.preferences import Preferences
from mailman.model.user import User
from public import public
+from zope.event import notify
from zope.interface import implementer
@@ -104,6 +107,7 @@ class UserManager:
@dbconnection
def create_address(self, store, email, display_name=None):
"""See `IUserManager`."""
+ notify(AddressCreatingEvent(email))
addresses = store.query(Address).filter(Address.email == email.lower())
if addresses.count() == 1:
found = addresses[0]
@@ -116,6 +120,7 @@ class UserManager:
address = Address(email, display_name)
address.preferences = Preferences()
store.add(address)
+ notify(AddressCreatedEvent(address))
return address
@dbconnection
@@ -123,6 +128,8 @@ class UserManager:
"""See `IUserManager`."""
# If there's a user controlling this address, it has to first be
# unlinked before the address can be deleted.
+ email = address.email
+ notify(AddressDeletingEvent(address))
if address.user:
address.user.unlink(address)
# Remove memberships.
@@ -134,6 +141,7 @@ class UserManager:
store.query(OneLastDigest).filter_by(address=address).delete()
# Now delete the address.
store.delete(address)
+ notify(AddressDeletedEvent(email))
@dbconnection
def get_address(self, store, email):