[CalendarServer-changes] [1264] CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py

source_changes at macosforge.org source_changes at macosforge.org
Sat Feb 24 10:32:55 PST 2007


Revision: 1264
          http://trac.macosforge.org/projects/calendarserver/changeset/1264
Author:   cdaboo at apple.com
Date:     2007-02-24 10:32:54 -0800 (Sat, 24 Feb 2007)

Log Message:
-----------
Raise an exception when an attempt to set an invalid principal as a group member occurs.

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

Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-02-24 18:11:52 UTC (rev 1263)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2007-02-24 18:32:54 UTC (rev 1264)
@@ -24,8 +24,6 @@
     "CalendarUserProxyPrincipalResource",
 ]
 
-from urllib import unquote
-
 from twisted.internet.defer import succeed
 from twisted.python import log
 from twisted.python.failure import Failure
@@ -33,12 +31,10 @@
 from twisted.web2.dav import davxml
 from twisted.web2.dav.element.base import dav_namespace
 from twisted.web2.dav.util import joinURL
-from twisted.web2.http import Response
-from twisted.web2.http_headers import MimeType
+from twisted.web2.http import HTTPError, StatusResponse
 
 from twistedcaldav.extensions import DAVFile, DAVPrincipalResource
 from twistedcaldav.extensions import ReadOnlyWritePropertiesResourceMixIn
-from twistedcaldav.resource import CalendarPrincipalResource
 from twistedcaldav.sql import AbstractSQLDatabase
 from twistedcaldav.static import AutoProvisioningFileMixIn
 
@@ -137,17 +133,25 @@
         # Really, c-u-p principals should be treated the same way as any other principal, so
         # they should be allowed as members of groups.
         #
-        # This implementation simply ignores any principal URIs that correspond to c-u-p principals.
+        # This implementation now raises an exception for any principal it cannot find.
 
         # Break out the list into a set of URIs.
         members = [str(h) for h in new_members.children]
         
         # Map the URIs to principals.
-        # NB Non-matching URIs will return None foe the principal
-        principals = [self.pcollection._principalForURI(uri) for uri in members]
+        principals = []
+        for uri in members:
+            principal = self.pcollection._principalForURI(uri)
+            # Invalid principals MUST result in an error.
+            if principal is None:
+                raise HTTPError(StatusResponse(
+                    responsecode.BAD_REQUEST,
+                    "Attempt to use a non-existent principal %s as a group member of %s." % (uri, self.principalURL(),)
+                ))
+            principals.append(principal)
         
-        # Map the principals to GUIDs, ignoring principals that are None.
-        guids = [p.principalUID() for p in principals if p is not None]
+        # Map the principals to GUIDs.
+        guids = [p.principalUID() for p in principals]
 
         self._index().setGroupMembers(self.guid, guids)
         return succeed(True)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070224/23fbac9f/attachment.html


More information about the calendarserver-changes mailing list