[CalendarServer-changes] [1996] CalendarServer/trunk/twistedcaldav/directory

source_changes at macosforge.org source_changes at macosforge.org
Mon Oct 29 13:05:15 PDT 2007


Revision: 1996
          http://trac.macosforge.org/projects/calendarserver/changeset/1996
Author:   cdaboo at apple.com
Date:     2007-10-29 13:05:14 -0700 (Mon, 29 Oct 2007)

Log Message:
-----------
Make sure principals that have been removed but are still listed as proxies are not returned as None
when doing group members/membership calls.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py

Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-10-26 20:05:59 UTC (rev 1995)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-10-29 20:05:14 UTC (rev 1996)
@@ -314,7 +314,7 @@
         if self.hasEditableMembership():
             # Get member UIDs from database and map to principal resources
             members = self._index().getMembers(self.uid)
-            return [self.pcollection.principalForUID(uid) for uid in members]
+            return [p for p in [self.pcollection.principalForUID(uid) for uid in members] if p]
         else:
             # Fixed proxies are only for read-write - the read-only list is empty
             if self.proxyType == "calendar-proxy-write":
@@ -329,7 +329,7 @@
     def groupMemberships(self):
         # Get membership UIDs and map to principal resources
         memberships = self._index().getMemberships(self.uid)
-        return [self.pcollection.principalForUID(uid) for uid in memberships]
+        return [p for p in [self.pcollection.principalForUID(uid) for uid in memberships] if p]
 
     def hasEditableMembership(self):
         return self.parent.hasEditableProxyMembership()

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py	2007-10-26 20:05:59 UTC (rev 1995)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py	2007-10-29 20:05:14 UTC (rev 1996)
@@ -112,6 +112,41 @@
         memberships = set([p.principalUID() for p in memberships])
         self.assertEquals(memberships, set(('non_calendar_proxy#calendar-proxy-write',)))
 
+    def test_groupMembersProxyMissingUser(self):
+        """
+        DirectoryPrincipalResource.groupMembers()
+        """
+        
+        # Setup the fake entry in the DB
+        proxy = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo")
+        proxy_group = proxy.getChild("calendar-proxy-write")
+        members = proxy_group._index().getMembers("%s#calendar-proxy-write" % (proxy.principalUID(),))
+        members.add("12345")
+        proxy_group._index().setGroupMembers("%s#calendar-proxy-write" % (proxy.principalUID(),), members)
+
+        # Do the failing lookup
+        members = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo").getChild("calendar-proxy-write").groupMembers()
+        members = set([p.displayName() for p in members])
+        self.assertEquals(members, set())
+
+    def test_groupMembershipsMissingUser(self):
+        """
+        DirectoryPrincipalResource.groupMembers()
+        """
+        
+        # Setup the fake entry in the DB
+        fake_uid = "12345"
+        proxy = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo")
+        proxy_group = proxy.getChild("calendar-proxy-write")
+        members = proxy_group._index().getMembers("%s#calendar-proxy-write" % (fake_uid,))
+        members.add("%s#calendar-proxy-write" % (proxy.principalUID(),))
+        proxy_group._index().setGroupMembers("%s#calendar-proxy-write" % (fake_uid,), members)
+
+        # Do the failing lookup
+        members = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo").getChild("calendar-proxy-write").groupMemberships()
+        members = set([p.displayName() for p in members])
+        self.assertEquals(members, set())
+
     def _getRecordByShortName(self, type, name):
         """
         @return: an iterable of tuples

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20071029/677296f7/attachment.html


More information about the calendarserver-changes mailing list