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

source_changes at macosforge.org source_changes at macosforge.org
Tue Jul 3 14:23:07 PDT 2007


Revision: 1643
          http://trac.macosforge.org/projects/calendarserver/changeset/1643
Author:   cdaboo at apple.com
Date:     2007-07-03 14:23:07 -0700 (Tue, 03 Jul 2007)

Log Message:
-----------
Make sure we can properly map the new form of proxy principal GUIDs to proxy principal resources.

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

Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-07-03 21:04:00 UTC (rev 1642)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-07-03 21:23:07 UTC (rev 1643)
@@ -77,6 +77,8 @@
     Calendar user proxy principal resource.
     """
 
+    guidMapper = {}    # dict to map a GUID to a proxy principal
+
     def davComplianceClasses(self):
         return tuple(super(CalendarUserProxyPrincipalResource, self).davComplianceClasses()) + (
             "calendar-access",
@@ -99,6 +101,7 @@
         if self.isCollection():
             self._url += "/"
         self.guid = uuidFromName(self.parent.principalUID(), proxyType)
+        self.guidMapper[self.guid] = self
 
         # Provision in __init__() because principals are used prior to request
         # lookups.
@@ -116,6 +119,10 @@
             setattr(self.pcollection, "calendar_user_proxy_db", CalendarUserProxyDatabase(self.pcollection.fp.path))
         return self.pcollection.calendar_user_proxy_db
 
+    @classmethod
+    def principalForGUID(cls, guid):
+        return cls.guidMapper.get(guid)
+
     def resourceType(self):
         if self.proxyType == "calendar-proxy-read":
             return davxml.ResourceType.calendarproxyread

Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py	2007-07-03 21:04:00 UTC (rev 1642)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py	2007-07-03 21:23:07 UTC (rev 1643)
@@ -100,6 +100,8 @@
         record = self.directory.recordWithGUID(guid)
         if record:
             return self.principalForRecord(record)
+        elif config.EnableProxyPrincipals:
+            return CalendarUserProxyPrincipalResource.principalForGUID(guid)
         else:
             return None
 
@@ -400,32 +402,6 @@
             setattr(pcollection, "calendar_user_proxy_db", CalendarUserProxyDatabase(pcollection.fp.path))
         return pcollection.calendar_user_proxy_db
 
-    def _map_calendar_user_proxy_guids(self, guids):
-        """
-        Return a list of principals mapped from a list of calendar user proxy principal GUIDs.
-        
-        @param guids: a C{list} of C{str}'s containing the GUIDs to map.
-        @return: a C{list} of L{CalendarPrincipalResource}s for each mapped GUID.
-        """
-        proxies = []
-        for guid in guids:
-            # Get the "base" GUID for the parent of the proxy principal
-            if guid.endswith("-calendar-proxy-read"):
-                guid = guid[:-20]
-                proxyType = "calendar-proxy-read"
-            elif guid.endswith("-calendar-proxy-write"):
-                guid = guid[:-21]
-                proxyType = "calendar-proxy-write"
-                
-            # Lookup the base GUID and get its principal resource
-            principal = self.parent.principalForGUID(guid)
-            if principal:
-                proxyprincipal = principal.getChild(proxyType)
-                if proxyprincipal:
-                    proxies.append(proxyprincipal)
-                    
-        return proxies
-            
     def groupMembers(self):
         return self._getRelatives("members")
 
@@ -437,7 +413,7 @@
             groups.update(self._getRelatives("proxyFor", proxy=True))
 
             # Get proxy group GUIDs and map to principal resources
-            proxies = self._map_calendar_user_proxy_guids(self._calendar_user_proxy_index().getMemberships(self.principalUID()))
+            proxies = [self.parent.principalForGUID(guid) for guid in self._calendar_user_proxy_index().getMemberships(self.principalUID())]
             groups.update(proxies)
 
         return groups

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070703/94c5c975/attachment.html


More information about the calendarserver-changes mailing list