[CalendarServer-changes] [3785] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Mon Mar 2 13:22:21 PST 2009
Revision: 3785
http://trac.macosforge.org/projects/calendarserver/changeset/3785
Author: cdaboo at apple.com
Date: 2009-03-02 13:22:19 -0800 (Mon, 02 Mar 2009)
Log Message:
-----------
Make sure principalForCalendarUserAddress returns None when the underlying directory record
is not enabled for calendaring.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/directory.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml
CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py
CalendarServer/trunk/twistedcaldav/directory/test/test_xmlfile.py
CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2009-03-02 21:22:19 UTC (rev 3785)
@@ -144,14 +144,16 @@
def recordWithCalendarUserAddress(self, address):
address = normalizeCUAddr(address)
+ record = None
if address.startswith("urn:uuid:"):
guid = address[9:]
- return self.recordWithGUID(guid)
+ record = self.recordWithGUID(guid)
elif address.startswith("mailto:"):
email = address[7:]
- return self.recordWithEmailAddress(email)
- return None
+ record = self.recordWithEmailAddress(email)
+ return record if record and record.enabledForCalendaring else None
+
def recordWithEmailAddress(self, email):
for record in self.allRecords():
if email in record.emailAddresses:
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2009-03-02 21:22:19 UTC (rev 3785)
@@ -318,16 +318,16 @@
def principalForCalendarUserAddress(self, address):
# First see if the address is a principal URI
principal = self._principalForURI(address)
- if principal and isinstance(principal, DirectoryCalendarPrincipalResource):
- return principal
+ if principal:
+ if isinstance(principal, DirectoryCalendarPrincipalResource):
+ return principal
+ else:
+ # Next try looking it up in the directory
+ record = self.directory.recordWithCalendarUserAddress(address)
+ if record is not None:
+ return self.principalForRecord(record)
- # Next try looking it up in the directory
- record = self.directory.recordWithCalendarUserAddress(address)
- if record is not None:
- return self.principalForRecord(record)
-
log.debug("No principal for calendar user address: %r" % (address,))
-
return None
Modified: CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml 2009-03-02 21:22:19 UTC (rev 3785)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-Copyright (c) 2006-2007 Apple Inc. All rights reserved.
+Copyright (c) 2006-2009 Apple Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -57,6 +57,14 @@
<email-address>dreid at example.com</email-address>
<cuaddr>mailto:dreid at example.com</cuaddr>
</user>
+ <user>
+ <uid>nocalendar</uid>
+ <guid>543D28BA-F74F-4D5F-9243-B3E3A61171E5</guid>
+ <password>radnelacon</password>
+ <name>No Calendar</name>
+ <email-address>nocalendar at example.com</email-address>
+ <disable-calendar/>
+ </user>
<user repeat="2">
<uid>user%02d</uid>
<password>%02duser</password>
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py 2009-03-02 21:22:19 UTC (rev 3785)
@@ -198,6 +198,12 @@
else:
self.failIf(principal is not None)
+ # Explicitly check the disabled record
+ self.failIf(provisioningResource.principalForCalendarUserAddress("mailto:nocalendar at example.com") is not None)
+ self.failIf(provisioningResource.principalForCalendarUserAddress("urn:uuid:543D28BA-F74F-4D5F-9243-B3E3A61171E5") is not None)
+ self.failIf(provisioningResource.principalForCalendarUserAddress("/principals/users/nocalendar/") is not None)
+ self.failIf(provisioningResource.principalForCalendarUserAddress("/principals/__uids__/543D28BA-F74F-4D5F-9243-B3E3A61171E5/") is not None)
+
def test_autoSchedule(self):
"""
DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_xmlfile.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_xmlfile.py 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_xmlfile.py 2009-03-02 21:22:19 UTC (rev 3785)
@@ -35,13 +35,14 @@
))
users = {
- "admin" : { "password": "nimda", "guid": "D11F03A0-97EA-48AF-9A6C-FAC7F3975766", "addresses": () },
- "wsanchez": { "password": "zehcnasw", "guid": "6423F94A-6B76-4A3A-815B-D52CFD77935D", "addresses": ("mailto:wsanchez at example.com",) },
- "cdaboo" : { "password": "oobadc", "guid": "5A985493-EE2C-4665-94CF-4DFEA3A89500", "addresses": ("mailto:cdaboo at example.com",) },
- "lecroy" : { "password": "yorcel", "guid": "8B4288F6-CC82-491D-8EF9-642EF4F3E7D0", "addresses": ("mailto:lecroy at example.com",) },
- "dreid" : { "password": "dierd", "guid": "5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1", "addresses": ("mailto:dreid at example.com",) },
- "user01" : { "password": "01user", "guid": None , "addresses": () },
- "user02" : { "password": "02user", "guid": None , "addresses": () },
+ "admin" : { "password": "nimda", "guid": "D11F03A0-97EA-48AF-9A6C-FAC7F3975766", "addresses": () },
+ "wsanchez" : { "password": "zehcnasw", "guid": "6423F94A-6B76-4A3A-815B-D52CFD77935D", "addresses": ("mailto:wsanchez at example.com",) },
+ "cdaboo" : { "password": "oobadc", "guid": "5A985493-EE2C-4665-94CF-4DFEA3A89500", "addresses": ("mailto:cdaboo at example.com",) },
+ "lecroy" : { "password": "yorcel", "guid": "8B4288F6-CC82-491D-8EF9-642EF4F3E7D0", "addresses": ("mailto:lecroy at example.com",) },
+ "dreid" : { "password": "dierd", "guid": "5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1", "addresses": ("mailto:dreid at example.com",) },
+ "nocalendar" : { "password": "radnelacon", "guid": "543D28BA-F74F-4D5F-9243-B3E3A61171E5", "addresses": () },
+ "user01" : { "password": "01user", "guid": None , "addresses": () },
+ "user02" : { "password": "02user", "guid": None , "addresses": () },
}
groups = {
Modified: CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py 2009-03-02 20:59:00 UTC (rev 3784)
+++ CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py 2009-03-02 21:22:19 UTC (rev 3785)
@@ -274,7 +274,6 @@
elif child_name == ELEMENT_EMAIL_ADDRESS:
if child.firstChild is not None:
self.emailAddresses.add(child.firstChild.data.encode("utf-8").lower())
- self.calendarUserAddresses.add("mailto:%s" % (child.firstChild.data.encode("utf-8"),))
elif child_name == ELEMENT_MEMBERS:
self._parseMembers(child, self.members)
elif child_name == ELEMENT_CUADDR:
@@ -304,6 +303,10 @@
else:
raise RuntimeError("Unknown account attribute: %s" % (child_name,))
+ if self.enabledForCalendaring:
+ for email in self.emailAddresses:
+ self.calendarUserAddresses.add("mailto:%s" % (email,))
+
def _parseMembers(self, node, addto):
for child in node._get_childNodes():
if child._get_localName() == ELEMENT_MEMBER:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090302/e8c08c3b/attachment-0001.html>
More information about the calendarserver-changes
mailing list