summaryrefslogtreecommitdiff
path: root/src/mailman/interfaces/member.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-12-23 14:43:31 -0500
committerBarry Warsaw2012-12-23 14:43:31 -0500
commitf620f664e138e672a2bc88ca7603075a99858882 (patch)
tree1f2bfa8e40d7f9e7a89b7d8109f5ac6b72092dbb /src/mailman/interfaces/member.py
parent7cade857aafe1aa066be7269c3cbb2025a69d648 (diff)
downloadmailman-f620f664e138e672a2bc88ca7603075a99858882.tar.gz
mailman-f620f664e138e672a2bc88ca7603075a99858882.tar.zst
mailman-f620f664e138e672a2bc88ca7603075a99858882.zip
Diffstat (limited to 'src/mailman/interfaces/member.py')
-rw-r--r--src/mailman/interfaces/member.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mailman/interfaces/member.py b/src/mailman/interfaces/member.py
index 997338835..815bda2d4 100644
--- a/src/mailman/interfaces/member.py
+++ b/src/mailman/interfaces/member.py
@@ -26,10 +26,13 @@ __all__ = [
'DeliveryStatus',
'IMember',
'MemberRole',
+ 'MembershipChangeEvent',
'MembershipError',
'MembershipIsBannedError',
'MissingPreferredAddressError',
'NotAMemberError',
+ 'SubscriptionEvent',
+ 'UnsubscriptionEvent',
]
@@ -74,6 +77,34 @@ class MemberRole(Enum):
+class MembershipChangeEvent:
+ """Base class for subscription/unsubscription events."""
+
+ def __init__(self, mlist, member):
+ self.mlist = mlist
+ self.member = member
+
+
+class SubscriptionEvent(MembershipChangeEvent):
+ """Event which gets triggered when a user joins a mailing list."""
+
+ def __str__(self):
+ return '{0} joined {1}'.format(self.member.address, self.mlist.list_id)
+
+
+class UnsubscriptionEvent(MembershipChangeEvent):
+ """Event which gets triggered when a user leaves a mailing list.
+
+ One thing to keep in mind: because the IMember is deleted when the
+ unsubscription happens, this event actually gets triggered just before the
+ member is unsubscribed.
+ """
+
+ def __str__(self):
+ return '{0} left {1}'.format(self.member.address, self.mlist.list_id)
+
+
+
class MembershipError(MailmanError):
"""Base exception for all membership errors."""