[CalendarServer-changes] [9301] CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py

source_changes at macosforge.org source_changes at macosforge.org
Fri May 25 07:09:14 PDT 2012


Revision: 9301
          http://trac.macosforge.org/projects/calendarserver/changeset/9301
Author:   cdaboo at apple.com
Date:     2012-05-25 07:09:14 -0700 (Fri, 25 May 2012)
Log Message:
-----------
Fix up proxy handling.

Modified Paths:
--------------
    CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py

Modified: CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py
===================================================================
--- CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py	2012-05-25 13:22:21 UTC (rev 9300)
+++ CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py	2012-05-25 14:09:14 UTC (rev 9301)
@@ -40,11 +40,18 @@
             self.cache[path.toString()].loadDetails(refresh=True)
         return self.cache[path.toString()] if path else None
 
+    def invalidate(self, path):
+        if path.toString() in self.cache:
+            del self.cache[path.toString()]
+
 principalCache = PrincipalCache()
 
 def make_tuple(item):
     return item if isinstance(item, tuple) else (item,)
     
+def make_tuple_from_list(item):
+    return item if isinstance(item, tuple) else ((item,) if item else ())
+
 class CalDAVPrincipal(object):
     
     def __init__(self, session, path):
@@ -132,14 +139,14 @@
             if self.valid:
                 self.displayname = results.get(davxml.displayname, None)
                 self.principalURL = results.get(davxml.principal_URL, None)
-                self.alternateURIs = make_tuple(results.get(davxml.alternate_URI_set, None))
-                self.memberset = make_tuple(results.get(davxml.group_member_set, None))
-                self.memberships = make_tuple(results.get(davxml.group_membership, None))
-                self.homeset = make_tuple(results.get(caldavxml.calendar_home_set, None))
+                self.alternateURIs = make_tuple(results.get(davxml.alternate_URI_set, ()))
+                self.memberset = make_tuple_from_list(results.get(davxml.group_member_set, ()))
+                self.memberships = make_tuple_from_list(results.get(davxml.group_membership, ()))
+                self.homeset = make_tuple(results.get(caldavxml.calendar_home_set, ()))
                 self.outboxURL = results.get(caldavxml.schedule_outbox_URL, None)
                 self.inboxURL = results.get(caldavxml.schedule_inbox_URL, None)
-                self.cuaddrs = make_tuple(results.get(caldavxml.calendar_user_address_set, None))
-                self.adbkhomeset = make_tuple(results.get(carddavxml.addressbook_home_set, None))
+                self.cuaddrs = make_tuple(results.get(caldavxml.calendar_user_address_set, ()))
+                self.adbkhomeset = make_tuple(results.get(carddavxml.addressbook_home_set, ()))
 
         # Get proxy resource details if proxy support is available
         if self.session.hasDAVVersion(headers.calendar_proxy) and not self.proxyFor:
@@ -219,7 +226,8 @@
         if not self.proxyreadURL:
             return ()
         
-        self.session.setProperties(self.proxyreadURL, ((davxml.group_member_set, principals),))            
+        self.session.setProperties(self.proxyreadURL, ((davxml.group_member_set, principals),))
+        principalCache.invalidate(self.proxyreadURL)
     
     def getWriteProxies(self, refresh=True):
         if not self.proxywriteURL:
@@ -233,6 +241,7 @@
             return ()
         
         self.session.setProperties(self.proxywriteURL, ((davxml.group_member_set, principals),))            
+        principalCache.invalidate(self.proxywriteURL)
     
     def listAddressBooks(self, root=None):
         adbks = []
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120525/12bd742b/attachment.html>


More information about the calendarserver-changes mailing list