[9301] CalDAVClientLibrary/trunk/caldavclientlibrary/client/principal.py
Revision: 9301 http://trac.macosforge.org/projects/calendarserver/changeset/9301 Author: cdaboo@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 = []
participants (1)
-
source_changes@macosforge.org