summaryrefslogtreecommitdiff
path: root/src/mailman/model/usermanager.py
diff options
context:
space:
mode:
authorJ08nY2017-06-15 23:22:05 +0200
committerJ08nY2017-06-16 15:23:08 +0200
commit5464216a2b852a8954c618aaed170e89cb8951f3 (patch)
tree85f1c67fb034be385b7a941526831f9ca76eff79 /src/mailman/model/usermanager.py
parent28dbc044a0d0c464c6800df6b5e27e2b25025b8d (diff)
downloadmailman-address-events.tar.gz
mailman-address-events.tar.zst
mailman-address-events.zip
Add AddressCreatingEvent and AddressCreatedEvent.address-events
Diffstat (limited to '')
-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):