[CalendarServer-changes] [13005] CalendarServer/branches/users/sagen/move2who-4

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 26 18:41:11 PDT 2014


Revision: 13005
          http://trac.calendarserver.org//changeset/13005
Author:   sagen at apple.com
Date:     2014-03-26 18:41:11 -0700 (Wed, 26 Mar 2014)
Log Message:
-----------
Fix auto-accept-group, adds expandedMembers( )

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/move2who-4/conf/auth/accounts-test.xml
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/accounts.xml
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/augments.xml
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py
    CalendarServer/branches/users/sagen/move2who-4/txdav/dps/client.py
    CalendarServer/branches/users/sagen/move2who-4/txdav/who/augment.py
    CalendarServer/branches/users/sagen/move2who-4/txdav/who/directory.py
    CalendarServer/branches/users/sagen/move2who-4/txdav/who/util.py

Added Paths:
-----------
    CalendarServer/branches/users/sagen/move2who-4/txdav/who/test/test_directory.py

Modified: CalendarServer/branches/users/sagen/move2who-4/conf/auth/accounts-test.xml
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/conf/auth/accounts-test.xml	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/conf/auth/accounts-test.xml	2014-03-27 01:41:11 UTC (rev 13005)
@@ -372,8 +372,8 @@
     <short-name>group02</short-name>
     <password>group02</password>
     <full-name>Group 02</full-name>
-      <member-uid type="users">user06</member-uid>
-      <member-uid type="users">user07</member-uid>
+      <member-uid >user06</member-uid>
+      <member-uid >user07</member-uid>
   </record>
   <record type="group">
     <uid>group03</uid>

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/accounts.xml
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/accounts.xml	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/accounts.xml	2014-03-27 01:41:11 UTC (rev 13005)
@@ -135,7 +135,7 @@
     <short-name>delegategroup</short-name>
     <uid>00599DAF-3E75-42DD-9DB7-52617E79943F</uid>
     <full-name>Delegate Group</full-name>
-    <member-uid>delegateviagroup</member-uid>
+    <member-uid>46D9D716-CBEE-490F-907A-66FA6C3767FF</member-uid>
   </record>
 
   <record type="user">
@@ -204,39 +204,39 @@
     <uid>9FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1</uid>
     <password>managers</password>
     <full-name>Managers</full-name>
-      <member-uid>lecroy</member-uid>
+      <member-uid>8B4288F6-CC82-491D-8EF9-642EF4F3E7D0</member-uid>
   </record>
   <record type="group">
     <short-name>admin</short-name>
     <uid>admin</uid>
     <password>admin</password>
     <full-name>Administrators</full-name>
-      <member-uid>managers</member-uid>
+      <member-uid>9FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1</member-uid>
   </record>
   <record type="group">
     <short-name>grunts</short-name>
     <uid>grunts</uid>
     <password>grunts</password>
     <full-name>We do all the work</full-name>
-      <member-uid>wsanchez</member-uid>
-      <member-uid>cdaboo</member-uid>
-      <member-uid>dreid</member-uid>
+      <member-uid>6423F94A-6B76-4A3A-815B-D52CFD77935D</member-uid>
+      <member-uid>5A985493-EE2C-4665-94CF-4DFEA3A89500</member-uid>
+      <member-uid>5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1</member-uid>
   </record>
   <record type="group">
     <short-name>right_coast</short-name>
     <uid>right_coast</uid>
     <password>right_coast</password>
     <full-name>East Coast</full-name>
-      <member-uid>cdaboo</member-uid>
+      <member-uid>5A985493-EE2C-4665-94CF-4DFEA3A89500</member-uid>
   </record>
   <record type="group">
     <short-name>left_coast</short-name>
     <uid>left_coast</uid>
     <password>left_coast</password>
     <full-name>West Coast</full-name>
-      <member-uid>wsanchez</member-uid>
-      <member-uid>lecroy</member-uid>
-      <member-uid>dreid</member-uid>
+      <member-uid>6423F94A-6B76-4A3A-815B-D52CFD77935D</member-uid>
+      <member-uid>8B4288F6-CC82-491D-8EF9-642EF4F3E7D0</member-uid>
+      <member-uid>5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1</member-uid>
   </record>
   <record type="group">
     <short-name>both_coasts</short-name>
@@ -252,7 +252,7 @@
     <password>recursive1_coasts</password>
     <full-name>Recursive1 Coasts</full-name>
       <member-uid>recursive2_coasts</member-uid>
-      <member-uid>wsanchez</member-uid>
+      <member-uid>6423F94A-6B76-4A3A-815B-D52CFD77935D</member-uid>
   </record>
   <record type="group">
     <short-name>recursive2_coasts</short-name>
@@ -260,15 +260,15 @@
     <password>recursive2_coasts</password>
     <full-name>Recursive2 Coasts</full-name>
       <member-uid>recursive1_coasts</member-uid>
-      <member-uid>cdaboo</member-uid>
+      <member-uid>5A985493-EE2C-4665-94CF-4DFEA3A89500</member-uid>
   </record>
   <record type="group">
     <short-name>non_calendar_group</short-name>
     <uid>non_calendar_group</uid>
     <password>non_calendar_group</password>
     <full-name>Non-calendar group</full-name>
-      <member-uid>cdaboo</member-uid>
-      <member-uid>lecroy</member-uid>
+      <member-uid>5A985493-EE2C-4665-94CF-4DFEA3A89500</member-uid>
+      <member-uid>8B4288F6-CC82-491D-8EF9-642EF4F3E7D0</member-uid>
   </record>
   <!--
   <location>

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/augments.xml
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/augments.xml	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/augments.xml	2014-03-27 01:41:11 UTC (rev 13005)
@@ -19,7 +19,24 @@
 <!DOCTYPE augments SYSTEM "../../../conf/auth/augments.dtd">
 
 <augments realm="Test">
+  <!--
   <record>
+    <uid>Location-Default</uid>
+    <enable>true</enable>
+    <enable-calendar>true</enable-calendar>
+    <enable-addressbook>true</enable-addressbook>
+    <auto-schedule-mode>automatic</auto-schedule-mode>
+  </record>
+  <record>
+    <uid>Resource-Default</uid>
+    <enable>true</enable>
+    <enable-calendar>true</enable-calendar>
+    <enable-addressbook>true</enable-addressbook>
+    <auto-schedule-mode>automatic</auto-schedule-mode>
+  </record>
+  -->
+
+  <record>
     <uid>D11F03A0-97EA-48AF-9A6C-FAC7F3975766</uid>
     <enable>true</enable>
     <enable-calendar>true</enable-calendar>
@@ -140,12 +157,14 @@
     <enable-calendar>true</enable-calendar>
     <enable-addressbook>true</enable-addressbook>
   </record>
+  <!--
   <record>
     <uid>non_calendar_proxy</uid>
     <enable>true</enable>
     <enable-calendar>true</enable-calendar>
     <enable-addressbook>true</enable-addressbook>
   </record>
+-->
   <record>
     <uid>disabled</uid>
     <enable>false</enable>

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-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -541,13 +541,12 @@
         for (
             provisioningResource, recordType, recordResource, record
         ) in (yield self._allRecords()):
-            if True:  # user.enabled:
-                members = yield recordResource.groupMembers()
-                self.failUnless(
-                    set((yield record.members())).issubset(
-                        set(r.record for r in members)
-                    )
+            members = yield recordResource.groupMembers()
+            self.failUnless(
+                set((yield record.members())).issubset(
+                    set(r.record for r in members)
                 )
+            )
 
 
     @inlineCallbacks
@@ -770,9 +769,13 @@
             if record.hasCalendars:
                 if (
                     recordType in (CalRecordType.location, CalRecordType.resource) or
-                    record.uid == "5A985493-EE2C-4665-94CF-4DFEA3A89500"
+                    record.uid == u"5A985493-EE2C-4665-94CF-4DFEA3A89500"
                 ):
-                    record.fields[record.service.fieldName.lookupByName("autoScheduleMode")] = AutoScheduleMode.acceptIfFreeDeclineIfBusy
+                    record.fields[
+                        record.service.fieldName.lookupByName(
+                            "autoScheduleMode"
+                        )
+                    ] = AutoScheduleMode.acceptIfFreeDeclineIfBusy
 
                     self.assertTrue((yield recordResource.canAutoSchedule()))
                 else:
@@ -797,30 +800,34 @@
         # augments.xml, therefore any organizer in that group should be able to
         # auto schedule
 
-        for (
-            provisioningResource, recordType, recordResource, record
-        ) in (yield self._allRecords()):
-            if record.uid == "apollo":
+        record = yield self.directory.recordWithUID(u"apollo")
 
-                # No organizer
-                self.assertFalse((yield recordResource.canAutoSchedule()))
+        # Turn off this record's autoschedule
+        record.fields[
+            record.service.fieldName.lookupByName(
+                "autoScheduleMode"
+            )
+        ] = AutoScheduleMode.none
 
-                # Organizer in auto-accept group
-                self.assertTrue(
-                    (
-                        yield recordResource.canAutoSchedule(
-                            organizer="mailto:wsanchez at example.com"
-                        )
-                    )
+        # No organizer
+        self.assertFalse((yield record.canAutoSchedule()))
+
+        # Organizer in auto-accept group
+        self.assertTrue(
+            (
+                yield record.canAutoSchedule(
+                    organizer="mailto:wsanchez at example.com"
                 )
-                # Organizer not in auto-accept group
-                self.assertFalse(
-                    (
-                        yield recordResource.canAutoSchedule(
-                            organizer="mailto:a at example.com"
-                        )
-                    )
+            )
+        )
+        # Organizer not in auto-accept group
+        self.assertFalse(
+            (
+                yield record.canAutoSchedule(
+                    organizer="mailto:a at example.com"
                 )
+            )
+        )
 
 
     @inlineCallbacks

Modified: CalendarServer/branches/users/sagen/move2who-4/txdav/dps/client.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/dps/client.py	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/dps/client.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -64,6 +64,7 @@
 ## Separate store for DPS (augments and delegates separate from calendar data)
 ## calverify needs deferreds, including:
 ##    component.normalizeCalendarUserAddresses
+## Store autoAcceptGroups in the group db?
 
 @implementer(IDirectoryService, IStoreDirectoryService)
 class DirectoryService(BaseDirectoryService, CalendarDirectoryServiceMixin):

Modified: CalendarServer/branches/users/sagen/move2who-4/txdav/who/augment.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/who/augment.py	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/who/augment.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -40,7 +40,7 @@
     CalendarDirectoryRecordMixin, CalendarDirectoryServiceMixin,
 )
 from txdav.who.idirectory import (
-    AutoScheduleMode, FieldName
+    AutoScheduleMode, FieldName, RecordType as CalRecordType
 )
 
 log = Logger()
@@ -304,6 +304,14 @@
                 "automatic": AutoScheduleMode.acceptIfFreeDeclineIfBusy,
             }.get(augmentRecord.autoScheduleMode, None)
 
+            # Resources/Locations default to automatic
+            if record.recordType in (
+                CalRecordType.location,
+                CalRecordType.resource
+            ):
+                if autoScheduleMode is None:
+                    autoScheduleMode = AutoScheduleMode.acceptIfFreeDeclineIfBusy
+
             self._assignToField(
                 fields, "autoScheduleMode",
                 autoScheduleMode

Modified: CalendarServer/branches/users/sagen/move2who-4/txdav/who/directory.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/who/directory.py	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/who/directory.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -420,6 +420,23 @@
             organizerRecord = yield service.recordWithCalendarUserAddress(organizer)
             if organizerRecord is not None:
                 autoAcceptGroup = yield service.recordWithUID(autoAcceptGroup)
-                if organizerRecord.uid in (yield autoAcceptGroup.members()):
+                members = yield autoAcceptGroup.expandedMembers()
+                if organizerRecord.uid in ([m.uid for m in members]):
                     returnValue(True)
         returnValue(False)
+
+
+    @inlineCallbacks
+    def expandedMembers(self, members=None):
+
+        if members is None:
+            members = set()
+
+        for member in (yield self.members()):
+            if member.recordType == BaseRecordType.user:
+                if member not in members:
+                    members.add(member)
+            elif member.recordType == BaseRecordType.group:
+                yield member.expandedMembers(members)
+
+        returnValue(members)

Added: CalendarServer/branches/users/sagen/move2who-4/txdav/who/test/test_directory.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/who/test/test_directory.py	                        (rev 0)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/who/test/test_directory.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -0,0 +1,42 @@
+##
+# Copyright (c) 2013 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.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+"""
+Directory tests
+"""
+
+from twisted.internet.defer import inlineCallbacks
+from twistedcaldav.test.util import StoreTestCase
+
+
+class DirectoryTestCase(StoreTestCase):
+
+    @inlineCallbacks
+    def test_expandedMembers(self):
+
+        record = yield self.directory.recordWithUID(u"both_coasts")
+
+        direct = yield record.members()
+        self.assertEquals(
+            set([u"left_coast", u"right_coast"]),
+            set([r.uid for r in direct])
+        )
+
+        expanded = yield record.expandedMembers()
+        self.assertEquals(
+            set([u"Chris Lecroy", u"Cyrus Daboo", u"David Reid", u"Wilfredo Sanchez"]),
+            set([r.displayName for r in expanded])
+        )

Modified: CalendarServer/branches/users/sagen/move2who-4/txdav/who/util.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/txdav/who/util.py	2014-03-26 20:27:19 UTC (rev 13004)
+++ CalendarServer/branches/users/sagen/move2who-4/txdav/who/util.py	2014-03-27 01:41:11 UTC (rev 13005)
@@ -107,6 +107,7 @@
 
         # Set the appropriate record types on each service
         types = []
+        fieldNames = []
         for recordTypeName in params.recordTypes:
             recordType = {
                 "users": RecordType.user,
@@ -127,7 +128,10 @@
             types.append(recordType)
 
         directory.recordType = ConstantsContainer(types)
-        directory.fieldName = ConstantsContainer((FieldName, CalFieldName))
+        directory.fieldName = ConstantsContainer(
+            (directory.fieldName, CalFieldName)
+        )
+        fieldNames.append(directory.fieldName)
         aggregatedServices.append(directory)
 
     #
@@ -166,9 +170,11 @@
         userDirectory.realmName, aggregatedServices
     )
     try:
+        fieldNames.append(CalFieldName)
         augmented = AugmentedDirectoryService(
             aggregateDirectory, store, augmentService
         )
+        augmented.fieldName = ConstantsContainer(fieldNames)
 
         # The delegate directory needs a way to look up user/group records
         # so hand it a reference to the augmented directory.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140326/5bcffb4d/attachment-0001.html>


More information about the calendarserver-changes mailing list