[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