[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