[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