------------------------------------------------------------
revno: 21
committer: Florian Fuchs <[email protected]>
branch nick: mailman.client
timestamp: Mon 2011-10-31 23:42:40 +0100
message:
  - refactored retrieval of user addresses: user.addresses now returns an 
_Addresses object which in turn yields _Address objects if iterated over.
  - added `preferences` property to Client class (global preferences) 
modified:
  mailman/client/_client.py
  mailman/client/docs/using.txt


--
lp:mailman.client
https://code.launchpad.net/~mailman-coders/mailman.client/trunk

Your team Mailman Coders is subscribed to branch lp:mailman.client.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman.client/trunk/+edit-subscription
=== modified file 'mailman/client/_client.py'
--- mailman/client/_client.py	2011-10-30 19:48:24 +0000
+++ mailman/client/_client.py	2011-10-31 22:42:40 +0000
@@ -139,6 +139,10 @@
         return self._connection.call('system')[1]
 
     @property
+    def preferences(self):
+        return self._connection.call('system/preferences')[1]
+
+    @property
     def lists(self):
         response, content = self._connection.call('lists')
         if 'entries' not in content:
@@ -444,17 +448,9 @@
             response, content = self._connection.call(self._url)
             self._info = content
 
-    def _get_addresses(self):
-        if self._addresses is None:
-            response, content = self._connection.call('users/{0}/addresses'.format(self.user_id))
-            if 'entries' not in content:
-                self._addresses = []
-            self._addresses = content['entries']
-
     @property
     def addresses(self):
-        self._get_addresses()
-        return self._addresses
+        return _Addresses(self._connection, self.user_id)
     
     @property
     def real_name(self):
@@ -477,6 +473,42 @@
         return self._info['self_link']
 
 
+class _Addresses:
+    def __init__(self, connection, user_id):
+        self._connection = connection
+        self._user_id = user_id
+        self._addresses = None
+        self._get_addresses()
+
+    def _get_addresses(self):
+        if self._addresses is None:
+            response, content = self._connection.call('users/{0}/addresses'.format(self._user_id))
+            if 'entries' not in content:
+                self._addresses = []
+            self._addresses = content['entries']
+
+    def __iter__(self):
+        for address in self._addresses:
+            yield _Address(self._connection, address)
+
+
+class _Address:
+    def __init__(self, connection, address):
+        self._connection = connection
+        self._address = address
+
+    def __repr__(self):
+        return self._address['email']
+
+    @property
+    def real_name(self):
+        return self._address['real_name']
+
+    @property
+    def registered_on(self):
+        return self._address['registered_on']
+
+
 LIST_READ_ONLY_ATTRS = ('bounces_address', 'created_at', 'digest_last_sent_at',
                         'fqdn_listname', 'http_etag', 'mail_host', 'join_address',
                         'last_post_at', 'leave_address', 'list_id', 'list_name',
@@ -521,4 +553,3 @@
         response, content = self._connection.call(self._url, data, 'PATCH')
 
 
-

=== modified file 'mailman/client/docs/using.txt'
--- mailman/client/docs/using.txt	2011-10-30 19:48:24 +0000
+++ mailman/client/docs/using.txt	2011-10-31 22:42:40 +0000
@@ -265,12 +265,15 @@
     >>> print cris.real_name
     Cris
 
-Every user has a list of one or more addresses.
+Every user has a list of one or more addresses. 
 
     >>> for address in cris.addresses:
-    ...     print address['email']
+    ...     print address
+    ...     print address.real_name
+    ...     print address.registered_on
     [email protected]
-
+    Cris
+    ...
 
 List Settings
 =============
@@ -308,3 +311,27 @@
     Test Numero Uno
 
 
+Preferences
+===========
+
+Preferences can be accessed and set for users, members and addresses.
+
+By default, preferences are not set and fall back to the global system preferences. They're read-only and can be accessed through the client object.
+
+    >>> global_prefs = client.preferences
+    >>> print global_prefs['acknowledge_posts']
+    False
+    >>> print global_prefs['delivery_mode']
+    regular
+    >>> print global_prefs['delivery_status']
+    enabled
+    >>> print global_prefs['hide_address']
+    True
+    >>> print global_prefs['preferred_language']
+    en
+    >>> print global_prefs['receive_list_copy']
+    True
+    >>> print global_prefs['receive_own_postings']
+    True
+
+

_______________________________________________
Mailman-coders mailing list
[email protected]
http://mail.python.org/mailman/listinfo/mailman-coders

Reply via email to