[CalendarServer-changes] [4817] CalendarServer/branches/users/cdaboo/implicit-improvements-4804/ twistedcaldav/scheduling/itip.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Dec 3 13:24:25 PST 2009
Revision: 4817
http://trac.macosforge.org/projects/calendarserver/changeset/4817
Author: cdaboo at apple.com
Date: 2009-12-03 13:24:24 -0800 (Thu, 03 Dec 2009)
Log Message:
-----------
Preserve the SCHEDULE-STATUS property on Attendee data when merging in an Organizer change.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/implicit-improvements-4804/twistedcaldav/scheduling/itip.py
Modified: CalendarServer/branches/users/cdaboo/implicit-improvements-4804/twistedcaldav/scheduling/itip.py
===================================================================
--- CalendarServer/branches/users/cdaboo/implicit-improvements-4804/twistedcaldav/scheduling/itip.py 2009-12-03 21:23:50 UTC (rev 4816)
+++ CalendarServer/branches/users/cdaboo/implicit-improvements-4804/twistedcaldav/scheduling/itip.py 2009-12-03 21:24:24 UTC (rev 4817)
@@ -99,10 +99,13 @@
master_valarms = [comp for comp in current_master.subcomponents() if comp.name() == "VALARM"]
private_comments = current_master.properties("X-CALENDARSERVER-PRIVATE-COMMENT")
transps = current_master.properties("TRANSP")
+ organizer = current_master.getProperty("ORGANIZER")
+ organizer_schedule_status = organizer.params().get("SCHEDULE-STATUS", None) if organizer else None
else:
master_valarms = ()
private_comments = ()
transps = ()
+ organizer_schedule_status = None
if itip_message.masterComponent() is not None:
@@ -117,11 +120,15 @@
master_component.addProperty(comment)
for transp in transps:
master_component.replaceProperty(transp)
+ if organizer_schedule_status:
+ organizer = master_component.getProperty("ORGANIZER")
+ if organizer:
+ organizer.params()["SCHEDULE-STATUS"] = organizer_schedule_status
# Now try to match recurrences
for component in new_calendar.subcomponents():
if component.name() != "VTIMEZONE" and component.getRecurrenceIDUTC() is not None:
- iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, component)
+ iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, organizer_schedule_status, component)
# Now try to match recurrences
for component in calendar.subcomponents():
@@ -132,7 +139,7 @@
new_component = new_calendar.deriveInstance(rid, allowCancelled=allowCancelled)
if new_component:
new_calendar.addComponent(new_component)
- iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, new_component)
+ iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, organizer_schedule_status, new_component)
# Replace the entire object
return new_calendar, rids
@@ -149,7 +156,7 @@
calendar.addComponent(component)
else:
component = component.duplicate()
- iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, component, remove_matched=True)
+ iTipProcessing.transferItems(calendar, master_valarms, private_comments, transps, organizer_schedule_status, component, remove_matched=True)
calendar.addComponent(component)
if recipient and not autoprocessing:
iTipProcessing.fixForiCal3((component,), recipient, config.Scheduling.CalDAV.OldDraftCompatibility)
@@ -446,7 +453,7 @@
return attendee.value(), partstat_changed, private_comment_changed
@staticmethod
- def transferItems(from_calendar, master_valarms, private_comments, transps, to_component, remove_matched=False):
+ def transferItems(from_calendar, master_valarms, private_comments, transps, organizer_schedule_status, to_component, remove_matched=False):
rid = to_component.getRecurrenceIDUTC()
@@ -458,6 +465,13 @@
[to_component.addProperty(prop) for prop in matched.properties("X-CALENDARSERVER-ATTENDEE-COMMENT")]
[to_component.replaceProperty(prop) for prop in matched.properties("TRANSP")]
+ organizer = matched.getProperty("ORGANIZER")
+ organizer_schedule_status = organizer.params().get("SCHEDULE-STATUS", None) if organizer else None
+ if organizer_schedule_status:
+ organizer = to_component.getProperty("ORGANIZER")
+ if organizer:
+ organizer.params()["SCHEDULE-STATUS"] = organizer_schedule_status
+
# Remove the old one
if remove_matched:
from_calendar.removeComponent(matched)
@@ -468,6 +482,10 @@
[to_component.addComponent(alarm) for alarm in master_valarms]
[to_component.addProperty(comment) for comment in private_comments]
[to_component.replaceProperty(transp) for transp in transps]
+ if organizer_schedule_status:
+ organizer = to_component.getProperty("ORGANIZER")
+ if organizer:
+ organizer.params()["SCHEDULE-STATUS"] = organizer_schedule_status
@staticmethod
def fixForiCal3(components, recipient, compatibilityMode):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091203/4692903b/attachment-0001.html>
More information about the calendarserver-changes
mailing list