diff options
| author | Barry Warsaw | 2012-12-23 14:43:31 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2012-12-23 14:43:31 -0500 |
| commit | f620f664e138e672a2bc88ca7603075a99858882 (patch) | |
| tree | 1f2bfa8e40d7f9e7a89b7d8109f5ac6b72092dbb /src/mailman/interfaces/member.py | |
| parent | 7cade857aafe1aa066be7269c3cbb2025a69d648 (diff) | |
| download | mailman-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.py | 31 |
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.""" |
