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

source_changes at macosforge.org source_changes at macosforge.org
Sat Feb 19 15:46:48 PST 2011


Revision: 7055
          http://trac.macosforge.org/projects/calendarserver/changeset/7055
Author:   sagen at apple.com
Date:     2011-02-19 15:46:45 -0800 (Sat, 19 Feb 2011)
Log Message:
-----------
If not enabledForCalendaring, CUA-set and CalendarHomeURLs will be empty
If not enabledForAddressBooks, AddressBookHomeURLs will be empty

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

Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py	2011-02-19 05:50:17 UTC (rev 7054)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py	2011-02-19 23:46:45 UTC (rev 7055)
@@ -839,6 +839,11 @@
     ##
 
     def calendarUserAddresses(self):
+
+        # No CUAs if not enabledForCalendaring.
+        if not self.record.enabledForCalendaring:
+            return set()
+
         # Get any CUAs defined by the directory implementation.
         addresses = set(self.record.calendarUserAddresses)
 
@@ -887,7 +892,10 @@
         returnValue(notification)
 
     def calendarHomeURLs(self):
-        homeURL = self._homeChildURL(None)
+        if self.record.enabledForCalendaring:
+            homeURL = self._homeChildURL(None)
+        else:
+            homeURL = ""
         return (homeURL,) if homeURL else ()
 
     def scheduleInboxURL(self):
@@ -909,7 +917,10 @@
             return None
 
     def addressBookHomeURLs(self):
-        homeURL = self._addressBookHomeChildURL(None)
+        if self.record.enabledForAddressBooks:
+            homeURL = self._addressBookHomeChildURL(None)
+        else:
+            homeURL = ""
         return (homeURL,) if homeURL else ()
 
     def _homeChildURL(self, name):

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py	2011-02-19 05:50:17 UTC (rev 7054)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py	2011-02-19 23:46:45 UTC (rev 7055)
@@ -26,6 +26,7 @@
 from twistedcaldav.cache import DisabledCacheNotifier
 from twistedcaldav.config import config
 from twistedcaldav.directory import augment, calendaruserproxy
+from twistedcaldav.directory.addressbook import DirectoryAddressBookHomeProvisioningResource
 from twistedcaldav.directory.calendar import DirectoryCalendarHomeProvisioningResource
 from twistedcaldav.directory.directory import DirectoryService
 from twistedcaldav.directory.xmlfile import XMLDirectoryService
@@ -340,6 +341,57 @@
                     ).issubset(set(recordResource.calendarUserAddresses()))
                 )
 
+                # Verify that if not enabled for calendaring, no CUAs:
+                record.enabledForCalendaring = False
+                self.failIf(recordResource.calendarUserAddresses())
+
+    def test_addressBookHomeURLs(self):
+        """
+        DirectoryPrincipalResource.addressBookHomeURLs(),
+        """
+        # No addressbook home provisioner should result in no addressbook homes.
+        for provisioningResource, recordType, recordResource, record in self._allRecords():
+            if record.enabledForAddressBooks:
+                self.failIf(tuple(recordResource.addressBookHomeURLs()))
+
+        # Need to create a addressbook home provisioner for each service.
+        addressBookRootResources = {}
+
+        for directory in self.directoryServices:
+            path = os.path.join(self.docroot, directory.__class__.__name__)
+
+            if os.path.exists(path):
+                rmdir(path)
+            os.mkdir(path)
+
+            # Need a data store
+            _newStore = CommonDataStore(path, None, True, False)
+
+            provisioningResource = DirectoryAddressBookHomeProvisioningResource(
+                directory,
+                "/addressbooks/",
+                _newStore
+            )
+
+            addressBookRootResources[directory.__class__.__name__] = provisioningResource
+
+        # AddressBook home provisioners should result in addressBook homes.
+        for provisioningResource, recordType, recordResource, record in self._allRecords():
+            if record.enabledForAddressBooks:
+                homeURLs = tuple(recordResource.addressBookHomeURLs())
+                self.failUnless(homeURLs)
+
+                # Turn off enabledForAddressBooks and addressBookHomeURLs should
+                # be empty
+                record.enabledForAddressBooks = False
+                self.failIf(tuple(recordResource.addressBookHomeURLs()))
+                record.enabledForAddressBooks = True
+
+                addressBookRootURL = addressBookRootResources[record.service.__class__.__name__].url()
+
+                for homeURL in homeURLs:
+                    self.failUnless(homeURL.startswith(addressBookRootURL))
+
     def test_calendarHomeURLs(self):
         """
         DirectoryPrincipalResource.calendarHomeURLs(),
@@ -380,6 +432,12 @@
                 homeURLs = tuple(recordResource.calendarHomeURLs())
                 self.failUnless(homeURLs)
 
+                # Turn off enabledForCalendaring and calendarHomeURLs should
+                # be empty
+                record.enabledForCalendaring = False
+                self.failIf(tuple(recordResource.calendarHomeURLs()))
+                record.enabledForCalendaring = True
+
                 calendarRootURL = calendarRootResources[record.service.__class__.__name__].url()
 
                 inboxURL = recordResource.scheduleInboxURL()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110219/c8f0c175/attachment.html>


More information about the calendarserver-changes mailing list