[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