------------------------------------------------------------
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