[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