[CalendarServer-changes] [2714] CalendarServer/branches/users/cdaboo/implicit-2660
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jul 17 13:21:02 PDT 2008
Revision: 2714
http://trac.macosforge.org/projects/calendarserver/changeset/2714
Author: cdaboo at apple.com
Date: 2008-07-17 13:21:01 -0700 (Thu, 17 Jul 2008)
Log Message:
-----------
Make support for the old-style POST on outbox scheduling optional. Default is to leave it in for now.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd-test.plist
CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd.plist
CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/caldavxml.py
CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/config.py
CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/resource.py
CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/scheduling/caldav.py
CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/test/test_options.py
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd-test.plist
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd-test.plist 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd-test.plist 2008-07-17 20:21:01 UTC (rev 2714)
@@ -388,6 +388,8 @@
<key>AddressPatterns</key>
<array>
</array>
+ <key>OldDraftCompatability</key>
+ <true/>
</dict>
<!-- iSchedule protocol options -->
<key>iSchedule</key>
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd.plist
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd.plist 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/conf/caldavd.plist 2008-07-17 20:21:01 UTC (rev 2714)
@@ -314,6 +314,8 @@
<key>AddressPatterns</key>
<array>
</array>
+ <key>OldDraftCompatability</key>
+ <true/>
</dict>
<!-- iSchedule protocol options -->
<key>iSchedule</key>
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/caldavxml.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/caldavxml.py 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/caldavxml.py 2008-07-17 20:21:01 UTC (rev 2714)
@@ -45,7 +45,7 @@
caldav_namespace = "urn:ietf:params:xml:ns:caldav"
-caldav_compliance = (
+caldav_full_compliance = (
"calendar-access",
"calendar-schedule",
"calendar-auto-schedule",
@@ -53,6 +53,13 @@
"inbox-availability",
)
+caldav_implicit_compliance = (
+ "calendar-access",
+ "calendar-auto-schedule",
+ "calendar-availability",
+ "inbox-availability",
+)
+
class CalDAVElement (davxml.WebDAVElement):
"""
CalDAV XML element.
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/config.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/config.py 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/config.py 2008-07-17 20:21:01 UTC (rev 2714)
@@ -181,9 +181,10 @@
"Scheduling": {
"CalDAV": {
- "EmailDomain" : "", # Domain for mailto calendar user addresses on this server
- "HTTPDomain" : "", # Domain for http calendar user addresses on this server
- "AddressPatterns" : [], # Reg-ex patterns to match local calendar user addresses
+ "EmailDomain" : "", # Domain for mailto calendar user addresses on this server
+ "HTTPDomain" : "", # Domain for http calendar user addresses on this server
+ "AddressPatterns" : [], # Reg-ex patterns to match local calendar user addresses
+ "OldDraftCompatability" : True # Whether to maintain compatibility with non-implicit mode
},
"iSchedule": {
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/resource.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/resource.py 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/resource.py 2008-07-17 20:21:01 UTC (rev 2714)
@@ -67,7 +67,10 @@
class CalDAVComplianceMixIn(object):
def davComplianceClasses(self):
- extra_compliance = caldavxml.caldav_compliance
+ if config.Scheduling["CalDAV"]["OldDraftCompatability"]:
+ extra_compliance = caldavxml.caldav_full_compliance
+ else:
+ extra_compliance = caldavxml.caldav_implicit_compliance
if config.EnableProxyPrincipals:
extra_compliance += customxml.calendarserver_proxy_compliance
if config.EnablePrivateEvents:
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/scheduling/caldav.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/scheduling/caldav.py 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/scheduling/caldav.py 2008-07-17 20:21:01 UTC (rev 2714)
@@ -120,9 +120,9 @@
# Different behavior for free-busy vs regular invite
if self.freebusy:
- yield self.generateLocalFreeBusyResponse(recipient, self.responses, organizerProp, uid)
+ yield self.generateFreeBusyResponse(recipient, self.responses, organizerProp, uid)
else:
- yield self.generateLocalResponse(recipient, self.responses, autoresponses)
+ yield self.generateResponse(recipient, self.responses, autoresponses)
# Now we have to do auto-respond
if len(autoresponses) != 0:
@@ -137,7 +137,7 @@
reactor.callLater(0.0, itip.handleRequest, *(self.scheduler.request, principal, inbox, self.scheduler.calendar.duplicate(), child))
@inlineCallbacks
- def generateLocalResponse(self, recipient, responses, autoresponses):
+ def generateResponse(self, recipient, responses, autoresponses):
# Hash the iCalendar data for use as the last path element of the URI path
calendar_str = str(self.scheduler.calendar)
name = md5.new(calendar_str + str(time.time()) + recipient.inbox.fp.path).hexdigest() + ".ics"
@@ -179,7 +179,7 @@
returnValue(True)
@inlineCallbacks
- def generateLocalFreeBusyResponse(self, recipient, responses, organizerProp, uid):
+ def generateFreeBusyResponse(self, recipient, responses, organizerProp, uid):
# Extract the ATTENDEE property matching current recipient from the calendar data
cuas = recipient.principal.calendarUserAddresses()
Modified: CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/test/test_options.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/test/test_options.py 2008-07-17 20:10:43 UTC (rev 2713)
+++ CalendarServer/branches/users/cdaboo/implicit-2660/twistedcaldav/test/test_options.py 2008-07-17 20:21:01 UTC (rev 2714)
@@ -18,12 +18,13 @@
from twisted.web2.test.test_server import SimpleRequest
import twistedcaldav.test.util
+from twistedcaldav.config import config
class OPTIONS (twistedcaldav.test.util.TestCase):
"""
OPTIONS request
"""
- def test_dav_header_caldav(self):
+ def test_dav_header_full_caldav(self):
"""
DAV header advertises CalDAV
"""
@@ -36,12 +37,34 @@
self.assertIn("access-control", dav, "no DAV access-control header")
self.assertIn("calendar-access", dav, "no DAV calendar-access header")
self.assertIn("calendar-schedule", dav, "no DAV calendar-schedule header")
+ self.assertIn("calendar-auto-schedule", dav, "no DAV calendar-auto-schedule header")
self.assertIn("calendar-availability", dav, "no DAV calendar-availability header")
+ config.Scheduling["CalDAV"]["OldDraftCompatability"] = True
request = SimpleRequest(self.site, "OPTIONS", "/")
return self.send(request, do_test)
+ def test_dav_header_implicit_caldav(self):
+ """
+ DAV header advertises CalDAV
+ """
+ def do_test(response):
+ response = IResponse(response)
+
+ dav = response.headers.getHeader("dav")
+ if not dav: self.fail("no DAV header: %s" % (response.headers,))
+ self.assertIn("1", dav, "no DAV level 1 header")
+ self.assertIn("access-control", dav, "no DAV access-control header")
+ self.assertIn("calendar-access", dav, "no DAV calendar-access header")
+ self.assertIn("calendar-auto-schedule", dav, "no DAV calendar-auto-schedule header")
+ self.assertIn("calendar-availability", dav, "no DAV calendar-availability header")
+
+ config.Scheduling["CalDAV"]["OldDraftCompatability"] = False
+ request = SimpleRequest(self.site, "OPTIONS", "/")
+
+ return self.send(request, do_test)
+
def test_allow_header_caldav(self):
"""
Allow header advertises MKCALENDAR
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080717/310421c1/attachment-0001.html
More information about the calendarserver-changes
mailing list