[CalendarServer-changes] [1020]
CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jan 10 20:58:53 PST 2007
Revision: 1020
http://trac.macosforge.org/projects/calendarserver/changeset/1020
Author: cdaboo at apple.com
Date: 2007-01-10 20:58:53 -0800 (Wed, 10 Jan 2007)
Log Message:
-----------
Result of merge -r1005:1018 https://svn.opensource.apple.com/repository/calendarserver/CalendarServer/trunk .
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/appleopendirectory.py
CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/principal.py
CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/test/test_principal.py
CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/schedule.py
Modified: CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/appleopendirectory.py 2007-01-11 04:54:17 UTC (rev 1019)
+++ CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/appleopendirectory.py 2007-01-11 04:58:53 UTC (rev 1020)
@@ -91,6 +91,7 @@
attrs = [
dsattributes.kDS1AttrGeneratedUID,
dsattributes.kDS1AttrDistinguishedName,
+ dsattributes.kDSNAttrCalendarPrincipalURI,
]
if recordType == DirectoryService.recordType_users:
listRecordType = dsattributes.kDSStdRecordTypeUsers
@@ -119,6 +120,14 @@
continue
realName = value.get(dsattributes.kDS1AttrDistinguishedName)
+ cuaddrs = value.get(dsattributes.kDSNAttrCalendarPrincipalURI)
+ cuaddrset = set()
+ if cuaddrs is not None:
+ if isinstance(cuaddrs, str):
+ cuaddrset.update((cuaddrs,))
+ else:
+ cuaddrset.update(cuaddrs)
+
if recordType == DirectoryService.recordType_groups:
memberGUIDs = value.get(dsattributes.kDSNAttrGroupMembers)
if memberGUIDs is None:
@@ -134,7 +143,7 @@
guid = guid,
shortName = shortName,
fullName = realName,
- calendarUserAddresses = set(), # FIXME: Should be able to look up email, etc.
+ calendarUserAddresses = cuaddrset,
memberGUIDs = memberGUIDs,
)
Modified: CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/principal.py 2007-01-11 04:54:17 UTC (rev 1019)
+++ CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/principal.py 2007-01-11 04:58:53 UTC (rev 1020)
@@ -131,11 +131,23 @@
if principal:
return principal
- record = self.directory.recordWithCalendarUserAddress(address)
- if record is None:
- return None
+ # Special case server absolute URIs
+ if address.startswith("http:") or address.startswith("https:"):
+ if address.endswith("/"):
+ altaddress = address[:-1]
+ else:
+ altaddress = address + "/"
+ addresses = (address, altaddress,)
else:
- return self.principalForRecord(record)
+ addresses = (address,)
+
+ # Next try looking it up in the directory
+ for addr in addresses:
+ record = self.directory.recordWithCalendarUserAddress(addr)
+ if record is not None:
+ return self.principalForRecord(record)
+
+ return None
##
# Static
Modified: CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/test/test_principal.py 2007-01-11 04:54:17 UTC (rev 1019)
+++ CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/directory/test/test_principal.py 2007-01-11 04:58:53 UTC (rev 1020)
@@ -125,6 +125,26 @@
principalCollections = recordResource.principalCollections()
self.assertEquals(set((provisioningURL,)), set(pc.principalCollectionURL() for pc in principalCollections))
+ def test_allRecords(self):
+ """
+ Test of a test routine...
+ """
+ for provisioningResource, recordType, recordResource, record in self._allRecords():
+ self.assertEquals(recordResource.record, record)
+
+ ##
+ # DirectoryPrincipalProvisioningResource
+ ##
+
+ def test_principalForShortName(self):
+ """
+ DirectoryPrincipalProvisioningResource.principalForShortName()
+ """
+ for provisioningResource, recordType, recordResource, record in self._allRecords():
+ principal = provisioningResource.principalForShortName(recordType, record.shortName)
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+
def test_principalForUser(self):
"""
DirectoryPrincipalProvisioningResource.principalForUser()
@@ -137,13 +157,46 @@
self.failIf(userResource is None)
self.assertEquals(user, userResource.record)
+ def test_principalForGUID(self):
+ """
+ DirectoryPrincipalProvisioningResource.principalForGUID()
+ """
+ for provisioningResource, recordType, recordResource, record in self._allRecords():
+ principal = provisioningResource.principalForGUID(record.guid)
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+
def test_principalForRecord(self):
"""
DirectoryPrincipalProvisioningResource.principalForRecord()
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- self.assertEquals(recordResource.record, record)
-
+ principal = provisioningResource.principalForRecord(record)
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+
+ def test_principalForCalendarUserAddress(self):
+ """
+ DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
+ """
+ for provisioningResource, recordType, recordResource, record in self._allRecords():
+ principalURL = recordResource.principalURL()
+ if principalURL.endswith("/"):
+ alternateURL = principalURL[:-1]
+ else:
+ alternateURL = principalURL + "/"
+
+ for address in tuple(record.calendarUserAddresses) + (principalURL, alternateURL):
+ principal = provisioningResource.principalForCalendarUserAddress(address)
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+
+ # FIXME: Run DirectoryPrincipalProvisioningResource tests on DirectoryPrincipalTypeResource also
+
+ ##
+ # DirectoryPrincipalResource
+ ##
+
def test_displayName(self):
"""
DirectoryPrincipalResource.displayName()
Modified: CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/schedule.py 2007-01-11 04:54:17 UTC (rev 1019)
+++ CalendarServer/branches/users/cdaboo/availability-1018/twistedcaldav/schedule.py 2007-01-11 04:58:53 UTC (rev 1020)
@@ -323,14 +323,18 @@
# Map recipient to their inbox
inbox = None
- if principal is not None:
+ if principal is None:
+ log.err("No principal for calendar user address: %s" % (recipient,))
+ else:
inboxURL = principal.scheduleInboxURL()
if inboxURL:
inbox = waitForDeferred(request.locateResource(inboxURL))
yield inbox
inbox = inbox.getResult()
+ else:
+ log.err("No schedule inbox for principal: %s" % (principal,))
+
if inbox is None:
- log.err("Could not find Inbox for recipient: %s" % (recipient,))
err = HTTPError(ErrorResponse(responsecode.NOT_FOUND, (caldav_namespace, "recipient-exists")))
responses.add(recipient, Failure(exc_value=err), reqstatus="3.7;Invalid Calendar User")
recipients_state["BAD"] += 1
@@ -338,7 +342,6 @@
# Process next recipient
continue
else:
-
#
# Check access controls
#
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070110/0ceab3ca/attachment.html
More information about the calendarserver-changes
mailing list