[CalendarServer-changes] [8426] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Mon Dec 12 10:30:42 PST 2011
Revision: 8426
http://trac.macosforge.org/projects/calendarserver/changeset/8426
Author: cdaboo at apple.com
Date: 2011-12-12 10:30:42 -0800 (Mon, 12 Dec 2011)
Log Message:
-----------
Allow per-user default alarm properties, and set default on shared calendar to none.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/caldavxml.py
CalendarServer/trunk/twistedcaldav/ical.py
CalendarServer/trunk/twistedcaldav/method/put_common.py
CalendarServer/trunk/twistedcaldav/resource.py
CalendarServer/trunk/twistedcaldav/sharing.py
Modified: CalendarServer/trunk/twistedcaldav/caldavxml.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/caldavxml.py 2011-12-12 18:28:54 UTC (rev 8425)
+++ CalendarServer/trunk/twistedcaldav/caldavxml.py 2011-12-12 18:30:42 UTC (rev 8426)
@@ -1079,6 +1079,14 @@
except ValueError:
return False
+ # Make sure there is one alarm component
+ try:
+ valarm = tuple(tuple(calendar.subcomponents())[0].subcomponents())[0]
+ except IndexError:
+ return False
+ if valarm.name().upper() != "VALARM":
+ return False
+
return True
class DefaultAlarmVEventDateTime (DefaultAlarmBase):
Modified: CalendarServer/trunk/twistedcaldav/ical.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/ical.py 2011-12-12 18:28:54 UTC (rev 8425)
+++ CalendarServer/trunk/twistedcaldav/ical.py 2011-12-12 18:30:42 UTC (rev 8426)
@@ -2079,10 +2079,13 @@
if calendar is None:
return False
except ValueError:
- return
+ return False
- valarm = tuple(tuple(calendar.subcomponents())[0].subcomponents())[0]
-
+ try:
+ valarm = tuple(tuple(calendar.subcomponents())[0].subcomponents())[0]
+ except IndexError:
+ return False
+
changed = False
for component in self.subcomponents():
if component.name().upper() not in ("VEVENT", "VTODO",):
Modified: CalendarServer/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py 2011-12-12 18:28:54 UTC (rev 8425)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py 2011-12-12 18:30:42 UTC (rev 8426)
@@ -765,6 +765,10 @@
if not self.destinationcal or self.destination.exists() or self.isiTIP:
return False
+ # Never add default alarms to calendar data in shared calendars
+ if self.destinationparent.isVirtualShare():
+ return False
+
# Add default alarm for VEVENT and VTODO only
mtype = self.calendar.mainType().upper()
if self.calendar.mainType().upper() not in ("VEVENT", "VTODO"):
Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py 2011-12-12 18:28:54 UTC (rev 8425)
+++ CalendarServer/trunk/twistedcaldav/resource.py 2011-12-12 18:30:42 UTC (rev 8426)
@@ -511,15 +511,14 @@
@inlineCallbacks
def _hasSharedProperty(self, qname, request):
- # Always have disabled default alarms on shared calendars
+ # Always have default alarms on shared calendars
if qname in (
caldavxml.DefaultAlarmVEventDateTime.qname(),
caldavxml.DefaultAlarmVEventDate.qname(),
caldavxml.DefaultAlarmVToDoDateTime.qname(),
caldavxml.DefaultAlarmVToDoDate.qname(),
- ):
- if self.isCalendarCollection():
- returnValue(True)
+ ) and self.isCalendarCollection():
+ returnValue(True)
ownerPrincipal = (yield self.resourceOwnerPrincipal(request))
p = self.deadProperties().contains(qname, uid=ownerPrincipal.principalUID())
@@ -590,23 +589,6 @@
@inlineCallbacks
def _readSharedProperty(self, qname, request):
- # Validate default alarm properties (do this even if the default alarm feature is off)
- if qname in (
- caldavxml.DefaultAlarmVEventDateTime.qname(),
- caldavxml.DefaultAlarmVEventDate.qname(),
- caldavxml.DefaultAlarmVToDoDateTime.qname(),
- caldavxml.DefaultAlarmVToDoDate.qname(),
- ):
- if self.isCalendarCollection():
- # Always disable default alarms on shared calendars
- propclass = {
- caldavxml.DefaultAlarmVEventDateTime.qname() : caldavxml.DefaultAlarmVEventDateTime,
- caldavxml.DefaultAlarmVEventDate.qname() : caldavxml.DefaultAlarmVEventDate,
- caldavxml.DefaultAlarmVToDoDateTime.qname() : caldavxml.DefaultAlarmVToDoDateTime,
- caldavxml.DefaultAlarmVToDoDate.qname() : caldavxml.DefaultAlarmVToDoDate,
- }[qname]
- returnValue(propclass.fromString(""))
-
# Default behavior - read per-user dead property
ownerPrincipal = (yield self.resourceOwnerPrincipal(request))
p = self.deadProperties().get(qname, uid=ownerPrincipal.principalUID())
@@ -775,7 +757,7 @@
))
if not property.valid():
raise HTTPError(ErrorResponse(
- responsecode.CONFLICT,
+ responsecode.FORBIDDEN,
(caldav_namespace, "valid-calendar-data"),
description="Invalid property"
))
@@ -793,13 +775,6 @@
"Property %s may only be set on calendar or home collection." % (property,)
))
- # Do not allow default alarms by sharees
- if isShare:
- raise HTTPError(StatusResponse(
- responsecode.FORBIDDEN,
- "Property %s is protected on shared calendar collections." % (property,)
- ))
-
if not property.valid():
raise HTTPError(ErrorResponse(
responsecode.CONFLICT,
@@ -2068,10 +2043,6 @@
if self.isCalendarCollection():
- # Sharees never have default alarms
- if self.isVirtualShare():
- return None
-
# Get from calendar or inherit from home
try:
prop = self.deadProperties().get(propname.qname())
Modified: CalendarServer/trunk/twistedcaldav/sharing.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/sharing.py 2011-12-12 18:28:54 UTC (rev 8425)
+++ CalendarServer/trunk/twistedcaldav/sharing.py 2011-12-12 18:30:42 UTC (rev 8426)
@@ -1041,9 +1041,13 @@
if displayname:
yield sharedCollection.writeProperty(davxml.DisplayName.fromString(displayname), request)
- # Calendars always start out transparent
+ # Calendars always start out transparent and with empty default alarms
if not oldShare and sharedCollection.isCalendarCollection():
yield sharedCollection.writeProperty(caldavxml.ScheduleCalendarTransp(caldavxml.Transparent()), request)
+ yield sharedCollection.writeProperty(caldavxml.DefaultAlarmVEventDateTime.fromString(""), request)
+ yield sharedCollection.writeProperty(caldavxml.DefaultAlarmVEventDate.fromString(""), request)
+ yield sharedCollection.writeProperty(caldavxml.DefaultAlarmVToDoDateTime.fromString(""), request)
+ yield sharedCollection.writeProperty(caldavxml.DefaultAlarmVToDoDate.fromString(""), request)
# Notify client of changes
yield self.notifyChanged()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111212/5bba1f7a/attachment-0001.html>
More information about the calendarserver-changes
mailing list