[CalendarServer-changes] [12978] CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/ directory/test/test_principal.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 19 18:22:18 PDT 2014


Revision: 12978
          http://trac.calendarserver.org//changeset/12978
Author:   wsanchez at apple.com
Date:     2014-03-19 18:22:18 -0700 (Wed, 19 Mar 2014)
Log Message:
-----------
Fix some things

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py	2014-03-20 00:16:14 UTC (rev 12977)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py	2014-03-20 01:22:18 UTC (rev 12978)
@@ -18,8 +18,8 @@
 import os
 from urllib import quote
 
+from twisted.internet.defer import inlineCallbacks, returnValue
 from twisted.cred.credentials import UsernamePassword
-from twisted.internet.defer import inlineCallbacks
 
 from txweb2.dav.fileop import rmdir
 from txweb2.dav.resource import AccessDeniedError
@@ -42,7 +42,6 @@
 )
 from twistedcaldav.directory.principal import (
     DirectoryCalendarPrincipalResource,
-    DirectoryPrincipalProvisioningResource,
     DirectoryPrincipalResource,
     DirectoryPrincipalTypeProvisioningResource,
 )
@@ -50,40 +49,18 @@
 
 
 
-# twistedcaldav.test.util.TestCase
 class ProvisionedPrincipals(StoreTestCase):
     """
     Directory service provisioned principals.
     """
-    # def setUp(self):
-    #     super(ProvisionedPrincipals, self).setUp()
+    @inlineCallbacks
+    def setUp(self):
+        yield super(ProvisionedPrincipals, self).setUp()
 
-    #     self.directoryServices = (
-    #         XMLDirectoryService(
-    #             {
-    #                 'xmlFile' : xmlFile,
-    #                 'augmentService' :
-    #                     augment.AugmentXMLDB(xmlFiles=(augmentsFile.path,)),
-    #             }
-    #         ),
-    #     )
+        self.principalRootResource = self.actualRoot.getChild("principals")
 
-    #     # Set up a principals hierarchy for each service we're testing with
-    #     self.principalRootResources = {}
-    #     for directory in self.directoryServices:
-    #         name = directory.__class__.__name__
-    #         url = "/" + name + "/"
 
-    #         provisioningResource = DirectoryPrincipalProvisioningResource(url, directory)
-    #         directory.setPrincipalCollection(provisioningResource)
 
-    #         self.site.resource.putChild(name, provisioningResource)
-
-    #         self.principalRootResources[directory.__class__.__name__] = provisioningResource
-
-    #     calendaruserproxy.ProxyDBService = calendaruserproxy.ProxySqliteDB(os.path.abspath(self.mktemp()))
-
-
     @inlineCallbacks
     def test_hierarchy(self):
         """
@@ -99,14 +76,11 @@
 
         DirectoryPrincipalResource.principalURL(),
         """
-        directory = self.directory
         if True:
             #print("\n -> %s" % (directory.__class__.__name__,))
-            provisioningResource = (
-                self.principalRootResources[directory.__class__.__name__]
-            )
+            provisioningResource = self.principalRootResource
 
-            provisioningURL = "/" + directory.__class__.__name__ + "/"
+            provisioningURL = "/" + self.directory.__class__.__name__ + "/"
             self.assertEquals(
                 provisioningURL,
                 provisioningResource.principalCollectionURL()
@@ -119,7 +93,7 @@
             )
 
             recordTypes = set((yield provisioningResource.listChildren()))
-            self.assertEquals(recordTypes, set(directory.recordTypes()))
+            self.assertEquals(recordTypes, set(self.directory.recordTypes()))
 
             for recordType in recordTypes:
                 #print("   -> %s" % (recordType,))
@@ -148,14 +122,16 @@
                 shortNames = set((yield typeResource.listChildren()))
                 # Handle records with mulitple shortNames
                 expected = []
-                for r in directory.listRecords(recordType):
+                for r in (
+                    yield self.directory.recordsWithRecordType(recordType)
+                ):
                     if r.uid != "disabled":
                         expected.extend(r.shortNames)
                 self.assertEquals(shortNames, set(expected))
 
                 for shortName in shortNames:
                     #print("     -> %s" % (shortName,))
-                    recordResource = typeResource.getChild(shortName)
+                    recordResource = yield typeResource.getChild(shortName)
                     self.failUnless(
                         isinstance(recordResource, DirectoryPrincipalResource)
                     )
@@ -182,14 +158,15 @@
                     )
 
 
+    @inlineCallbacks
     def test_allRecords(self):
         """
         Test of a test routine...
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 self.assertEquals(recordResource.record, record)
 
 
@@ -197,99 +174,108 @@
     # DirectoryPrincipalProvisioningResource
     ##
 
+    @inlineCallbacks
     def test_principalForShortName(self):
         """
         DirectoryPrincipalProvisioningResource.principalForShortName()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            principal = provisioningResource.principalForShortName(
+        ) in (yield self._allRecords()):
+            principal = yield provisioningResource.principalForShortName(
                 recordType, record.shortNames[0]
             )
-            if record.enabled:
+            if True:  # user.enabled:
                 self.failIf(principal is None)
                 self.assertEquals(record, principal.record)
             else:
                 self.failIf(principal is not None)
 
 
+    @inlineCallbacks
     def test_principalForUser(self):
         """
         DirectoryPrincipalProvisioningResource.principalForUser()
         """
-        directory = self.directory
-        provisioningResource = (
-            self.principalRootResources[directory.__class__.__name__]
-        )
+        provisioningResource = self.principalRootResource
 
-        for user in directory.listRecords(DirectoryService.recordType_users):
-            userResource = provisioningResource.principalForUser(
+        for user in (
+            yield self.directory.recordsWithRecordType(
+                self.directory.recordType.user
+            )
+        ):
+            userResource = yield provisioningResource.principalForUser(
                 user.shortNames[0]
             )
-            if user.enabled:
+            if True:  # user.enabled:
                 self.failIf(userResource is None)
                 self.assertEquals(user, userResource.record)
             else:
                 self.failIf(userResource is not None)
 
 
+    @inlineCallbacks
     def test_principalForAuthID(self):
         """
         DirectoryPrincipalProvisioningResource.principalForAuthID()
         """
-        directory = self.directory
-        provisioningResource = (
-            self.principalRootResources[directory.__class__.__name__]
-        )
+        provisioningResource = self.principalRootResource
 
-        for user in directory.listRecords(DirectoryService.recordType_users):
+        for user in (
+            yield self.directory.recordsWithRecordType(
+                self.directory.recordType.user
+            )
+        ):
             creds = UsernamePassword(user.shortNames[0], "bogus")
-            userResource = provisioningResource.principalForAuthID(creds)
-            if user.enabled:
+            userResource = yield provisioningResource.principalForAuthID(creds)
+            if True:  # user.enabled:
                 self.failIf(userResource is None)
                 self.assertEquals(user, userResource.record)
             else:
                 self.failIf(userResource is not None)
 
 
+    @inlineCallbacks
     def test_principalForUID(self):
         """
         DirectoryPrincipalProvisioningResource.principalForUID()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            principal = provisioningResource.principalForUID(record.uid)
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            principal = yield provisioningResource.principalForUID(record.uid)
+            if True:  # user.enabled:
                 self.failIf(principal is None)
                 self.assertEquals(record, principal.record)
             else:
                 self.failIf(principal is not None)
 
 
+    @inlineCallbacks
     def test_principalForRecord(self):
         """
         DirectoryPrincipalProvisioningResource.principalForRecord()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            principal = provisioningResource.principalForRecord(record)
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            principal = yield provisioningResource.principalForRecord(record)
+            if True:  # user.enabled:
                 self.failIf(principal is None)
                 self.assertEquals(record, principal.record)
             else:
                 self.failIf(principal is not None)
 
 
+    @inlineCallbacks
     def test_principalForCalendarUserAddress(self):
         """
-        DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
+        DirectoryPrincipalProvisioningResource
+        .principalForCalendarUserAddress()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
+        ) in (yield self._allRecords()):
 
             test_items = tuple(record.calendarUserAddresses)
             if recordResource:
@@ -302,61 +288,69 @@
 
             for address in test_items:
                 principal = (
-                    provisioningResource
+                    yield provisioningResource
                     .principalForCalendarUserAddress(address)
                 )
-                if record.enabledForCalendaring:
+                if record.hasCalendars:
                     self.failIf(principal is None)
                     self.assertEquals(record, principal.record)
                 else:
                     self.failIf(principal is not None)
 
         # Explicitly check the disabled record
-        provisioningResource = (
-            self.principalRootResources['XMLDirectoryService']
-        )
+        provisioningResource = self.principalRootResource
 
         self.failUnlessIdentical(
-            provisioningResource.principalForCalendarUserAddress(
-                "mailto:nocalendar at example.com"
+            (
+                yield provisioningResource.principalForCalendarUserAddress(
+                    "mailto:nocalendar at example.com"
+                )
             ),
             None
         )
         self.failUnlessIdentical(
-            provisioningResource.principalForCalendarUserAddress(
-                "urn:uuid:543D28BA-F74F-4D5F-9243-B3E3A61171E5"
+            (
+                yield provisioningResource.principalForCalendarUserAddress(
+                    "urn:uuid:543D28BA-F74F-4D5F-9243-B3E3A61171E5"
+                )
             ),
             None
         )
         self.failUnlessIdentical(
-            provisioningResource.principalForCalendarUserAddress(
-                "/principals/users/nocalendar/"
+            (
+                yield provisioningResource.principalForCalendarUserAddress(
+                    "/principals/users/nocalendar/"
+                )
             ),
             None
         )
         self.failUnlessIdentical(
-            provisioningResource.principalForCalendarUserAddress(
-                "/principals/__uids__/543D28BA-F74F-4D5F-9243-B3E3A61171E5/"
+            (
+                yield provisioningResource.principalForCalendarUserAddress(
+                    "/principals/__uids__/"
+                    "543D28BA-F74F-4D5F-9243-B3E3A61171E5/"
+                )
             ),
             None
         )
 
 
     @inlineCallbacks
-    def test_enabledForCalendaring(self):
+    def test_hasCalendars(self):
         """
-        DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
+        DirectoryPrincipalProvisioningResource
+        .principalForCalendarUserAddress()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            principal = provisioningResource.principalForRecord(record)
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            principal = yield provisioningResource.principalForRecord(record)
+            if True:  # user.enabled:
                 self.failIf(principal is None)
             else:
                 self.failIf(principal is not None)
                 continue
-            if record.enabledForCalendaring:
+            if record.hasCalendars:
                 self.assertTrue(
                     isinstance(principal, DirectoryCalendarPrincipalResource)
                 )
@@ -364,7 +358,7 @@
                 self.assertTrue(
                     isinstance(principal, DirectoryPrincipalResource)
                 )
-                if record.enabledForAddressBooks:
+                if record.hasContacts:
                     self.assertTrue(
                         isinstance(
                             principal, DirectoryCalendarPrincipalResource
@@ -397,7 +391,7 @@
                         % (principal, property,)
                     )
 
-            if record.enabledForCalendaring:
+            if record.hasCalendars:
                 yield hasProperty(
                     (caldav_namespace, "calendar-home-set")
                 )
@@ -448,7 +442,7 @@
                     (calendarserver_namespace, "auto-schedule")
                 )
 
-            if record.enabledForAddressBooks:
+            if record.hasContacts:
                 yield hasProperty(carddavxml.AddressBookHomeSet.qname())
             else:
                 yield doesNotHaveProperty(
@@ -456,20 +450,23 @@
                 )
 
 
+    @inlineCallbacks
     def test_enabledAsOrganizer(self):
         """
-        DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
+        DirectoryPrincipalProvisioningResource
+        .principalForCalendarUserAddress()
         """
-
         ok_types = (
-            DirectoryService.recordType_users,
+            self.directory.recordType.user,
         )
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
+        ) in (yield self._allRecords()):
 
-            if record.enabledForCalendaring:
-                principal = provisioningResource.principalForRecord(record)
+            if record.hasCalendars:
+                principal = (
+                    yield provisioningResource.principalForRecord(record)
+                )
                 self.failIf(principal is None)
                 self.assertEqual(
                     principal.enabledAsOrganizer(),
@@ -480,16 +477,18 @@
         config.Scheduling.Options.AllowLocationAsOrganizer = True
         config.Scheduling.Options.AllowResourceAsOrganizer = True
         ok_types = (
-            DirectoryService.recordType_users,
-            DirectoryService.recordType_groups,
-            DirectoryService.recordType_locations,
-            DirectoryService.recordType_resources,
+            self.directory.recordType.user,
+            self.directory.recordType.group,
+            self.directory.recordType.location,
+            self.directory.recordType.resource,
         )
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
-                principal = provisioningResource.principalForRecord(record)
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
+                principal = (
+                    yield provisioningResource.principalForRecord(record)
+                )
                 self.failIf(principal is None)
                 self.assertEqual(
                     principal.enabledAsOrganizer(),
@@ -504,6 +503,7 @@
     # DirectoryPrincipalResource
     ##
 
+    @inlineCallbacks
     def test_cacheNotifier(self):
         """
         Each DirectoryPrincipalResource should have a cacheNotifier attribute
@@ -511,8 +511,8 @@
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 self.failUnless(
                     isinstance(
                         recordResource.cacheNotifier,
@@ -521,14 +521,15 @@
                 )
 
 
+    @inlineCallbacks
     def test_displayName(self):
         """
         DirectoryPrincipalResource.displayName()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 self.failUnless(recordResource.displayName())
 
 
@@ -539,11 +540,11 @@
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 members = yield recordResource.groupMembers()
                 self.failUnless(
-                    set(record.members()).issubset(
+                    set((yield record.members())).issubset(
                         set(r.record for r in members)
                     )
                 )
@@ -556,11 +557,11 @@
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 memberships = yield recordResource.groupMemberships()
                 self.failUnless(
-                    set(record.groups()).issubset(
+                    set((yield record.groups())).issubset(
                         set(
                             r.record
                             for r in memberships if hasattr(r, "record")
@@ -569,49 +570,53 @@
                 )
 
 
+    @inlineCallbacks
     def test_principalUID(self):
         """
         DirectoryPrincipalResource.principalUID()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
                 self.assertEquals(record.guid, recordResource.principalUID())
 
 
+    @inlineCallbacks
     def test_calendarUserAddresses(self):
         """
         DirectoryPrincipalResource.calendarUserAddresses()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 self.assertEqual(
                     set(record.calendarUserAddresses),
                     set(recordResource.calendarUserAddresses())
                 )
 
                 # Verify that if not enabled for calendaring, no CUAs:
-                record.enabledForCalendaring = False
+                record.hasCalendars = False
                 self.failIf(recordResource.calendarUserAddresses())
 
 
+    @inlineCallbacks
     def test_canonicalCalendarUserAddress(self):
         """
         DirectoryPrincipalResource.canonicalCalendarUserAddress()
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 self.failUnless(
                     recordResource.canonicalCalendarUserAddress()
                     .startswith("urn:uuid:")
                 )
 
 
+    @inlineCallbacks
     def test_addressBookHomeURLs(self):
         """
         DirectoryPrincipalResource.addressBookHomeURLs(),
@@ -620,57 +625,43 @@
         # homes.
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForAddressBooks:
+        ) in (yield self._allRecords()):
+            if record.hasContacts:
                 self.failIf(tuple(recordResource.addressBookHomeURLs()))
 
-        # Need to create a addressbook home provisioner for each service.
-        addressBookRootResources = {}
+        path = os.path.join(self.docroot, self.directory.__class__.__name__)
 
-        directory = self.directory
-        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, none, true, false)
-
-        provisioningresource = directoryaddressbookhomeprovisioningresource(
-            directory,
+        addressBookRootResource = DirectoryAddressBookHomeProvisioningResource(
+            self.directory,
             "/addressbooks/",
-            newstore
+            self.storeUnderTest()
         )
 
-        addressbookrootresources[directory.__class__.__name__] = (
-            provisioningResource
-        )
-
         # AddressBook home provisioners should result in addressBook homes.
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForAddressBooks:
+        ) in (yield self._allRecords()):
+            if record.hasContacts:
                 homeURLs = tuple(recordResource.addressBookHomeURLs())
                 self.failUnless(homeURLs)
 
-                # Turn off enabledForAddressBooks and addressBookHomeURLs
+                # Turn off hasContacts and addressBookHomeURLs
                 # should be empty
-                record.enabledForAddressBooks = False
+                record.hasContacts = False
                 self.failIf(tuple(recordResource.addressBookHomeURLs()))
-                record.enabledForAddressBooks = True
+                record.hasContacts = True
 
-                addressBookRootURL = (
-                    addressBookRootResources[
-                        record.service.__class__.__name__
-                    ].url()
-                )
+                addressBookRootURL = addressBookRootResource.url()
 
                 for homeURL in homeURLs:
                     self.failUnless(homeURL.startswith(addressBookRootURL))
 
 
+    @inlineCallbacks
     def test_calendarHomeURLs(self):
         """
         DirectoryPrincipalResource.calendarHomeURLs(),
@@ -680,8 +671,8 @@
         # No calendar home provisioner should result in no calendar homes.
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 self.failIf(tuple(recordResource.calendarHomeURLs()))
                 self.failIf(recordResource.scheduleInboxURL())
                 self.failIf(recordResource.scheduleOutboxURL())
@@ -689,8 +680,7 @@
         # Need to create a calendar home provisioner for each service.
         calendarRootResources = {}
 
-        directory = self.directory
-        path = os.path.join(self.docroot, directory.__class__.__name__)
+        path = os.path.join(self.docroot, self.directory.__class__.__name__)
 
         if os.path.exists(path):
             rmdir(path)
@@ -700,28 +690,28 @@
         _newStore = CommonDataStore(path, None, None, True, False)
 
         provisioningResource = DirectoryCalendarHomeProvisioningResource(
-            directory,
+            self.directory,
             "/calendars/",
             _newStore
         )
 
-        calendarRootResources[directory.__class__.__name__] = (
+        calendarRootResources[self.directory.__class__.__name__] = (
             provisioningResource
         )
 
         # Calendar home provisioners should result in calendar homes.
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 homeURLs = tuple(recordResource.calendarHomeURLs())
                 self.failUnless(homeURLs)
 
-                # Turn off enabledForCalendaring and calendarHomeURLs should
+                # Turn off hasCalendars and calendarHomeURLs should
                 # be empty
-                record.enabledForCalendaring = False
+                record.hasCalendars = False
                 self.failIf(tuple(recordResource.calendarHomeURLs()))
-                record.enabledForCalendaring = True
+                record.hasCalendars = True
 
                 calendarRootURL = (
                     calendarRootResources[
@@ -752,6 +742,7 @@
                 self.failIf(outboxURL)
 
 
+    @inlineCallbacks
     def test_canAutoSchedule(self):
         """
         DirectoryPrincipalResource.canAutoSchedule()
@@ -760,8 +751,8 @@
         # Set all resources and locations to auto-schedule, plus one user
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 if (
                     recordType in ("locations", "resources") or
                     record.uid == "cdaboo"
@@ -771,8 +762,8 @@
         # Default state - resources and locations, enabled, others not
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 if recordType in ("locations", "resources"):
                     self.assertTrue(recordResource.canAutoSchedule())
                 else:
@@ -782,8 +773,8 @@
         self.patch(config.Scheduling.Options.AutoSchedule, "AllowUsers", True)
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 if (
                     recordType in ("locations", "resources") or
                     record.uid == "cdaboo"
@@ -796,11 +787,12 @@
         self.patch(config.Scheduling.Options.AutoSchedule, "Enabled", False)
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabledForCalendaring:
+        ) in (yield self._allRecords()):
+            if record.hasCalendars:
                 self.assertFalse(recordResource.canAutoSchedule())
 
 
+    @inlineCallbacks
     def test_canAutoScheduleAutoAcceptGroup(self):
         """
         DirectoryPrincipalResource.canAutoSchedule(organizer)
@@ -812,7 +804,7 @@
 
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
+        ) in (yield self._allRecords()):
             if record.uid == "apollo":
 
                 # No organizer
@@ -839,10 +831,12 @@
         """
         for (
             provisioningResource, recordType, recordResource, record
-        ) in self._allRecords():
-            if record.enabled:
-                for args in _authReadOnlyPrivileges(
-                    self, recordResource, recordResource.principalURL()
+        ) in (yield self._allRecords()):
+            if True:  # user.enabled:
+                for args in (
+                    yield _authReadOnlyPrivileges(
+                        self, recordResource, recordResource.principalURL()
+                    )
                 ):
                     yield self._checkPrivileges(*args)
 
@@ -852,24 +846,24 @@
         """
         Default access controls for principal provisioning resources.
         """
-        directory = self.directory
-        #print("\n -> %s" % (directory.__class__.__name__,))
-        provisioningResource = (
-            self.principalRootResources[directory.__class__.__name__]
-        )
+        provisioningResource = self.principalRootResource
 
-        for args in _authReadOnlyPrivileges(
-            self, provisioningResource,
-            provisioningResource.principalCollectionURL()
+        for args in (
+            yield _authReadOnlyPrivileges(
+                self, provisioningResource,
+                provisioningResource.principalCollectionURL()
+            )
         ):
             yield self._checkPrivileges(*args)
 
         for recordType in (yield provisioningResource.listChildren()):
             #print("   -> %s" % (recordType,))
-            typeResource = provisioningResource.getChild(recordType)
+            typeResource = yield provisioningResource.getChild(recordType)
 
-            for args in _authReadOnlyPrivileges(
-                self, typeResource, typeResource.principalCollectionURL()
+            for args in (
+                yield _authReadOnlyPrivileges(
+                    self, typeResource, typeResource.principalCollectionURL()
+                )
             ):
                 yield self._checkPrivileges(*args)
 
@@ -884,9 +878,7 @@
             def qname(self):
                 return self.ns, self.name
 
-        provisioningResource = (
-            self.principalRootResources['XMLDirectoryService']
-        )
+        provisioningResource = self.principalRootResource
 
         expected = (
             (
@@ -961,6 +953,7 @@
             )
 
 
+    @inlineCallbacks
     def _allRecords(self):
         """
         @return: an iterable of tuples
@@ -968,18 +961,21 @@
             where C{provisioningResource} is the root provisioning resource,
             C{recordType} is the record type, C{recordResource} is the
             principal resource and C{record} is the directory service record
-            for each record in each directory in C{directoryServices}.
+            for each record the directory.
         """
-        directory = self.directory
-        provisioningResource = self.principalRootResources[
-            directory.__class__.__name__
-        ]
-        for recordType in directory.recordTypes():
-            for record in directory.listRecords(recordType):
+        provisioningResource = self.principalRootResource
+        results = []
+        for recordType in self.directory.recordTypes():
+            for record in (
+                yield self.directory.recordsWithRecordType(recordType)
+            ):
                 recordResource = (
-                    provisioningResource.principalForRecord(record)
+                    yield provisioningResource.principalForRecord(record)
                 )
-                yield provisioningResource, recordType, recordResource, record
+                results.append(
+                    (provisioningResource, recordType, recordResource, record)
+                )
+        returnValue(results)
 
 
     def _checkPrivileges(self, resource, url, principal, privilege, allowed):
@@ -1017,12 +1013,13 @@
 
 
 
+ at inlineCallbacks
 def _authReadOnlyPrivileges(self, resource, url):
     items = []
     for (
         provisioningResource, recordType, recordResource, record
-    ) in self._allRecords():
-        if record.enabled:
+    ) in (yield self._allRecords()):
+        if True:  # user.enabled:
             items.append((
                 davxml.HRef().fromString(recordResource.principalURL()),
                 davxml.Read(), True
@@ -1038,5 +1035,8 @@
         davxml.Unauthenticated(), davxml.Write(), False
     ))
 
+    results = []
     for principal, privilege, allowed in items:
-        yield resource, url, principal, privilege, allowed
+        results.append((resource, url, principal, privilege, allowed))
+
+    returnValue(results)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140319/8ce0b169/attachment-0001.html>


More information about the calendarserver-changes mailing list