------------------------------------------------------------
revno: 35
committer: Florian Fuchs <[email protected]>
branch nick: mailman.client
timestamp: Tue 2012-09-25 16:26:58 +0200
message:
  - addresses can now be accessed as objects (client.get_address(...))
  - addresses can be (un)verified with object.verify()/unverify()
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	2012-09-23 20:52:30 +0000
+++ mailman/client/_client.py	2012-09-25 14:26:58 +0000
@@ -203,7 +203,9 @@
         return _Domain(self._connection, response['location'])
 
     def delete_domain(self, mail_host):
-        response, content = self._connection.call('domains/{0}'.format(mail_host), None, 'DELETE')
+        response, content = self._connection.call('domains/{0}'
+                                                  .format(mail_host),
+                                                  None, 'DELETE')
 
     def get_domain(self, mail_host=None, web_host=None):
         """Get domain by its mail_host or its web_host."""
@@ -232,6 +234,11 @@
             'users/{0}'.format(address))
         return _User(self._connection, content['self_link'])
 
+    def get_address(self, address):
+        response, content = self._connection.call(
+            'addresses/{0}'.format(address))
+        return _Address(self._connection, content)
+
     def get_list(self, fqdn_listname):
         response, content = self._connection.call(
             'lists/{0}'.format(fqdn_listname))
@@ -633,7 +640,8 @@
 
     def _get_addresses(self):
         if self._addresses is None:
-            response, content = self._connection.call('users/{0}/addresses'.format(self._user_id))
+            response, content = self._connection.call('users/{0}/addresses'
+                                                      .format(self._user_id))
             if 'entries' not in content:
                 self._addresses = []
             self._addresses = content['entries']
@@ -664,24 +672,49 @@
     def __init__(self, connection, address):
         self._connection = connection
         self._address = address
+        self._url = address['self_link']
+        self._info = None
 
     def __repr__(self):
         return self._address['email']
 
+    def _get_info(self):
+        if self._info is None:
+            response, content = self._connection.call(self._url)
+            self._info = content
+
     @property
     def display_name(self):
-        return self._address.get('display_name')
+        self._get_info()
+        return self._info.get('display_name')
 
     @property
     def registered_on(self):
-        return self._address['registered_on']
+        self._get_info()
+        return self._info.get('registered_on')
+
+    @property
+    def verified_on(self):
+        self._get_info()
+        return self._info.get('verified_on')
+
+    def verify(self):
+        self._connection.call('addresses/{0}/verify'
+                              .format(self._address['email']), method='POST')
+        self._info = None
+
+    def unverify(self):
+        self._connection.call('addresses/{0}/unverify'
+                              .format(self._address['email']), method='POST')
+        self._info = None
 
 
 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',
-                        'next_digest_number', 'no_reply_address', 'owner_address',
-                        'post_id', 'posting_address', 'request_address', 'scheme',
+                        'fqdn_listname', 'http_etag', 'mail_host',
+                        'join_address', 'last_post_at', 'leave_address',
+                        'list_id', 'list_name', 'next_digest_number',
+                        'no_reply_address', 'owner_address', 'post_id',
+                        'posting_address', 'request_address', 'scheme',
                         'volume', 'web_host',)
 
 

=== modified file 'mailman/client/docs/using.txt'
--- mailman/client/docs/using.txt	2012-09-23 20:52:30 +0000
+++ mailman/client/docs/using.txt	2012-09-25 14:26:58 +0000
@@ -282,6 +282,32 @@
     Cris
     ...
 
+Addresses can be accessed directly:
+
+    >>> address = client.get_address('[email protected]')
+    >>> print address
+    [email protected]
+    >>> print address.display_name
+    Cris
+
+The address has not been verified:
+
+    >>> print address.verified_on is None
+    True
+
+But that can be done via the address object:
+
+    >>> address.verify()
+    >>> address.verified_on is None
+    False
+
+It can also be unverified:
+
+    >>> address.unverify()
+    >>> address.verified_on is None
+    True
+
+
 Users can be added using ``create_user``. The display_name is optional:
     >>> client.create_user(email='[email protected]',
     ...                    password='somepass',

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

Reply via email to