[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