[CalendarServer-changes] [14794] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon May 18 05:19:17 PDT 2015


Revision: 14794
          http://trac.calendarserver.org//changeset/14794
Author:   cdaboo at apple.com
Date:     2015-05-18 05:19:17 -0700 (Mon, 18 May 2015)
Log Message:
-----------
Enable standard timezone service by default (not in -apple.plist). Make sure CALDAV:timezone-service-set property is advertised.

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/tap/util.py
    CalendarServer/trunk/conf/caldavd-apple.plist
    CalendarServer/trunk/twistedcaldav/caldavxml.py
    CalendarServer/trunk/twistedcaldav/resource.py
    CalendarServer/trunk/twistedcaldav/stdconfig.py
    CalendarServer/trunk/twistedcaldav/timezonestdservice.py

Modified: CalendarServer/trunk/calendarserver/tap/util.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/util.py	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/calendarserver/tap/util.py	2015-05-18 12:19:17 UTC (rev 14794)
@@ -575,7 +575,7 @@
         for enabled, wellknown_name, redirected_to in (
             (config.EnableCalDAV, "caldav", "/principals/",),
             (config.EnableCardDAV, "carddav", "/principals/",),
-            (config.TimezoneService.Enabled, "timezone", "/stdtimezones",),
+            (config.TimezoneService.Enabled, "timezone", config.TimezoneService.URI,),
             (config.Scheduling.iSchedule.Enabled, "ischedule", "/ischedule"),
         ):
             if enabled:

Modified: CalendarServer/trunk/conf/caldavd-apple.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd-apple.plist	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/conf/caldavd-apple.plist	2015-05-18 12:19:17 UTC (rev 14794)
@@ -515,6 +515,13 @@
     <key>EnableTimezoneService</key>
     <true/>
 
+    <!-- Standard Timezone Service -->
+    <key>TimezoneService</key>
+    <dict>
+    	<key>Enabled</key>
+    	<false/>
+    </dict>
+
     <!-- Shared Calendars & Address Books -->
     <key>Sharing</key>
     <dict>

Modified: CalendarServer/trunk/twistedcaldav/caldavxml.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/caldavxml.py	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/twistedcaldav/caldavxml.py	2015-05-18 12:19:17 UTC (rev 14794)
@@ -1445,7 +1445,27 @@
     allowed_children = {(dav_namespace, "href"): (0, 1)}
 
 
+#
+# draft-ietf-tzdist-caldav-timezone-ref
+#
 
+caldav_timezone_service_set_compliance = (
+    "timezone-service-set",
+)
+
+
+
+ at registerElement
+class TimezoneServiceSet (CalDAVElement):
+    """
+    Zero or one href elements defining the base scheme/host for attachments.
+    """
+    name = "timezone-service-set"
+
+    allowed_children = {(dav_namespace, "href"): (0, 1)}
+
+
+
 #
 # Extensions to ResourceType
 #

Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/twistedcaldav/resource.py	2015-05-18 12:19:17 UTC (rev 14794)
@@ -2399,6 +2399,13 @@
         returnValue((storeHome, created))
 
 
+    def davComplianceClasses(self):
+        compliance = tuple(super(CalendarHomeResource, self).davComplianceClasses())
+        if config.EnableTimezonesByReference:
+            compliance += caldavxml.caldav_timezone_service_set_compliance
+        return compliance
+
+
     def liveProperties(self):
 
         existing = super(CalendarHomeResource, self).liveProperties()
@@ -2420,6 +2427,11 @@
                 caldavxml.ManagedAttachmentsServerURL.qname(),
             )
 
+        if config.EnableTimezonesByReference:
+            existing += (
+                caldavxml.TimezoneServiceSet.qname(),
+            )
+
         return existing
 
 
@@ -2471,6 +2483,13 @@
             else:
                 returnValue(None)
 
+        elif qname == caldavxml.TimezoneServiceSet.qname():
+            if config.EnableTimezonesByReference and config.TimezoneService.Enabled:
+                # Href points to standard timezone dist service.
+                returnValue(caldavxml.TimezoneServiceSet(element.HRef.fromString(config.TimezoneService.URI)))
+            else:
+                returnValue(None)
+
         elif qname in DefaultAlarmPropertyMixin.ALARM_PROPERTIES:
             returnValue(self.getDefaultAlarmProperty(qname))
 

Modified: CalendarServer/trunk/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/stdconfig.py	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/twistedcaldav/stdconfig.py	2015-05-18 12:19:17 UTC (rev 14794)
@@ -511,7 +511,8 @@
     "EnableTimezoneService"   : False, # Old Timezone service
 
     "TimezoneService"         : {    # New standard timezone service
-        "Enabled"       : False, # Overall on/off switch
+        "Enabled"       : True,      # Overall on/off switch
+        "URI"           : "/stdtimezones", # URI where service is hosted
         "Mode"          : "primary", # Can be "primary" or "secondary"
         "BasePath"      : "",        # Path to directory containing a zoneinfo - if None use default package path
                                      # secondary service MUST define its own writable path

Modified: CalendarServer/trunk/twistedcaldav/timezonestdservice.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/timezonestdservice.py	2015-05-18 12:15:13 UTC (rev 14793)
+++ CalendarServer/trunk/twistedcaldav/timezonestdservice.py	2015-05-18 12:19:17 UTC (rev 14794)
@@ -29,6 +29,7 @@
 from txweb2 import responsecode
 from txweb2.dav.method.propfind import http_PROPFIND
 from txweb2.dav.noneprops import NonePropertyStore
+from txweb2.dav.util import joinURL
 from txweb2.http import HTTPError, JSONResponse, StatusResponse
 from txweb2.http import Response
 from txweb2.http_headers import MimeType
@@ -291,6 +292,7 @@
         if len(request.args) != 0:
             self.problemReport("invalid-action", "Invalid request-URI query parameters", responsecode.BAD_REQUEST)
 
+        urlbase = request.path.rsplit("/", 1)[0]
         result = {
             "version": "1",
             "info" : {
@@ -301,16 +303,19 @@
             "actions" : [
                 {
                     "name": "capabilities",
+                    "uri-template": joinURL(urlbase, "capabilities"),
                     "parameters": [],
                 },
                 {
                     "name": "list",
+                    "uri-template": joinURL(urlbase, "zones{?changedsince}"),
                     "parameters": [
                         {"name": "changedsince", "required": False, "multi": False, },
                     ],
                 },
                 {
                     "name": "get",
+                    "uri-template": joinURL(urlbase, "zones{/tzid}{?start,end}"),
                     "parameters": [
                         {"name": "start", "required": False, "multi": False},
                         {"name": "stop", "required": False, "multi": False, },
@@ -318,14 +323,15 @@
                 },
                 {
                     "name": "expand",
+                    "uri-template": joinURL(urlbase, "zones{/tzid}/observances{?start,end}"),
                     "parameters": [
                         {"name": "start", "required": True, "multi": False, },
                         {"name": "end", "required": True, "multi": False, },
-                        {"name": "changedsince", "required": False, "multi": False, },
                     ],
                 },
                 {
                     "name": "find",
+                    "uri-template": joinURL(urlbase, "zones{?pattern}"),
                     "parameters": [
                         {"name": "pattern", "required": True, "multi": False, },
                     ],
@@ -399,7 +405,7 @@
         Expand a timezone within specified start/end dates.
         """
 
-        if set(request.args.keys()) - set(("start", "end", "changedsince",)):
+        if set(request.args.keys()) - set(("start", "end",)):
             self.problemReport("invalid-action", "Invalid request-URI query parameters", responsecode.BAD_REQUEST)
 
         start = request.args.get("start", ())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150518/b32dc9db/attachment-0001.html>


More information about the calendarserver-changes mailing list