[CalendarServer-changes] [11450] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jul 2 13:33:36 PDT 2013
Revision: 11450
http://trac.calendarserver.org//changeset/11450
Author: sagen at apple.com
Date: 2013-07-02 13:33:36 -0700 (Tue, 02 Jul 2013)
Log Message:
-----------
Handle /principals/ based CUAs
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
CalendarServer/trunk/twistedcaldav/directory/directory.py
CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py
Modified: CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py 2013-07-02 17:04:07 UTC (rev 11449)
+++ CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py 2013-07-02 20:33:36 UTC (rev 11450)
@@ -300,15 +300,13 @@
def recordWithCalendarUserAddress(self, address):
address = normalizeCUAddr(address)
record = None
- if address.startswith("urn:uuid:"):
- guid = address[9:]
- record = self.recordWithGUID(guid)
- elif address.startswith("mailto:"):
+ if address.startswith("mailto:"):
record = self._lookupRecord(None, CachingDirectoryService.INDEX_TYPE_CUA, address)
+ return record if record and record.enabledForCalendaring else None
+ else:
+ return DirectoryService.recordWithCalendarUserAddress(self, address)
- return record if record and record.enabledForCalendaring else None
-
def recordWithAuthID(self, authID):
return self._lookupRecord(None, CachingDirectoryService.INDEX_TYPE_AUTHID, authID)
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2013-07-02 17:04:07 UTC (rev 11449)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2013-07-02 20:33:36 UTC (rev 11450)
@@ -231,12 +231,12 @@
return None
elif address.startswith("/principals/"):
parts = address.split("/")
- if len(parts) == 3:
- if parts[1] == "__uids__":
- guid = parts[2]
+ if len(parts) == 4:
+ if parts[2] == "__uids__":
+ guid = parts[3]
record = self.recordWithGUID(guid)
else:
- record = self.recordWithShortName(parts[1], parts[2])
+ record = self.recordWithShortName(parts[2], parts[3])
return record if record and record.enabledForCalendaring else None
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py 2013-07-02 17:04:07 UTC (rev 11449)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_cachedirectory.py 2013-07-02 20:33:36 UTC (rev 11450)
@@ -245,6 +245,49 @@
) is not None)
self.assertFalse(self.service.queried)
+ def test_cacheonePrincipalsURLWithUIDS(self):
+ self.dummyRecords()
+
+ guid = self.guidForShortName("user03", "users")
+ self.assertTrue(self.service.recordWithCalendarUserAddress(
+ "/principals/__uids__/%s" % (guid,)
+ ) is not None)
+ self.assertTrue(self.service.queried)
+ self.verifyRecords(DirectoryService.recordType_users, set((
+ self.guidForShortName("user03", recordType=DirectoryService.recordType_users),
+ )))
+ self.verifyRecords(DirectoryService.recordType_groups, set())
+ self.verifyRecords(DirectoryService.recordType_resources, set())
+ self.verifyRecords(DirectoryService.recordType_locations, set())
+
+ # Make sure it really is cached and won't cause another query
+ self.service.queried = False
+ self.assertTrue(self.service.recordWithCalendarUserAddress(
+ "/principals/__uids__/%s" % (guid,)
+ ) is not None)
+ self.assertFalse(self.service.queried)
+
+ def test_cacheonePrincipalsURLWithUsers(self):
+ self.dummyRecords()
+
+ self.assertTrue(self.service.recordWithCalendarUserAddress(
+ "/principals/users/user03"
+ ) is not None)
+ self.assertTrue(self.service.queried)
+ self.verifyRecords(DirectoryService.recordType_users, set((
+ self.guidForShortName("user03", recordType=DirectoryService.recordType_users),
+ )))
+ self.verifyRecords(DirectoryService.recordType_groups, set())
+ self.verifyRecords(DirectoryService.recordType_resources, set())
+ self.verifyRecords(DirectoryService.recordType_locations, set())
+
+ # Make sure it really is cached and won't cause another query
+ self.service.queried = False
+ self.assertTrue(self.service.recordWithCalendarUserAddress(
+ "/principals/users/user03"
+ ) is not None)
+ self.assertFalse(self.service.queried)
+
def test_cacheoneauthid(self):
self.dummyRecords()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130702/3e2d1580/attachment.html>
More information about the calendarserver-changes
mailing list