summaryrefslogtreecommitdiff
path: root/Mailman/interfaces/member.py
diff options
context:
space:
mode:
authorBarry Warsaw2007-06-18 10:50:23 -0400
committerBarry Warsaw2007-06-18 10:50:23 -0400
commit511a33778c4195c4abca7c58aa6917e6a77059b6 (patch)
tree5bffc7a5793a8247310294ac86931741e73b1fc5 /Mailman/interfaces/member.py
parentf0e3b3934d5d458cadd814eeae07277b58650180 (diff)
downloadmailman-511a33778c4195c4abca7c58aa6917e6a77059b6.tar.gz
mailman-511a33778c4195c4abca7c58aa6917e6a77059b6.tar.zst
mailman-511a33778c4195c4abca7c58aa6917e6a77059b6.zip
Remove both the model and interface for RosterSets. These are no longer used
or necessary in the current data model. Convert the test_handlers.py Python test to an acknowledge.txt doctest, and make the Acknowledge.py handler work with the new data model. There are a few XXX comments left in here due to the fact that the web stuff is a total hack in the current branch currently. Added IMailingListWeb methods and properties to the MailingList model class: web_host and script_url(). Work out how IMembers will expose the lookup-order based preferences. By getting the attribute IMember.preferences you can see exactly the preferences overridden by this member. To use the lookup order, use IMember.delivery_mode, IMember.acknowledge_posts, etc. IOW, the IMember interface now provides the properties directly and access through this mechanism supports lookup order with definitive preference values. Also added IMember.unsubscribe() which does the obvious, and IMember.options_url() which is a total hack for providing a url (but not the ultimately right one) for the user's option page. Refactor the model's roster classes. Also added IRoster.get_member() method with efficient queries to return the right results. Make AdministratorRoster.members more efficient due to a better query. Update the membership.txt doctest to eliminate a chance ordering effect, and also to test finding members with .get_member(). The clean up section uses the new .unsubscribe() method.
Diffstat (limited to 'Mailman/interfaces/member.py')
-rw-r--r--Mailman/interfaces/member.py57
1 files changed, 47 insertions, 10 deletions
diff --git a/Mailman/interfaces/member.py b/Mailman/interfaces/member.py
index 5d5e3f717..4bb03f41d 100644
--- a/Mailman/interfaces/member.py
+++ b/Mailman/interfaces/member.py
@@ -32,17 +32,54 @@ class IMember(Interface):
"""The email address that's subscribed to the list.""")
preferences = Attribute(
- """The set of preferences for this subscription.
+ """This member's preferences.""")
- This will return an IPreferences object using the following lookup
- rules:
+ role = Attribute(
+ """The role of this membership.""")
+
+ def unsubscribe():
+ """Unsubscribe (and delete) this member from the mailing list."""
+
+ acknowledge_posts = Attribute(
+ """This is the actual acknowledgment setting for this member.
+
+ Unlike going through the preferences, this attribute return the
+ preference value based on the following lookup order:
- 1. member
- 2. address
- 3. user
- 4. mailing list
- 5. system default
+ 1. The member
+ 2. The address
+ 3. The user
+ 4. System default
""")
- role = Attribute(
- """The role of this membership.""")
+ delivery_mode = Attribute(
+ """This is the actual delivery mode for this member.
+
+ Unlike going through the preferences, this attribute return the
+ preference value based on the following lookup order:
+
+ 1. The member
+ 2. The address
+ 3. The user
+ 4. System default
+ """)
+
+ preferred_language = Attribute(
+ """This is the actual preferred language for this member.
+
+ Unlike going through the preferences, this attribute return the
+ preference value based on the following lookup order:
+
+ 1. The member
+ 2. The address
+ 3. The user
+ 4. System default
+ """)
+
+ options_url = Attribute(
+ """Return the url for the given member's option page.
+
+ XXX This needs a serious re-think in the face of the unified user
+ database, since a member's options aren't tied to any specific mailing
+ list. So in what part of the web-space does the user's options live?
+ """)