[CalendarServer-changes] [11028] CalendarServer/branches/users/cdaboo/store-scheduling/txdav/caldav/ datastore/sql.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Apr 11 06:46:55 PDT 2013
Revision: 11028
http://trac.calendarserver.org//changeset/11028
Author: cdaboo at apple.com
Date: 2013-04-11 06:46:55 -0700 (Thu, 11 Apr 2013)
Log Message:
-----------
Checkpoint prior to merge from trunk.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/store-scheduling/txdav/caldav/datastore/sql.py
Modified: CalendarServer/branches/users/cdaboo/store-scheduling/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/cdaboo/store-scheduling/txdav/caldav/datastore/sql.py 2013-04-11 13:34:51 UTC (rev 11027)
+++ CalendarServer/branches/users/cdaboo/store-scheduling/txdav/caldav/datastore/sql.py 2013-04-11 13:46:55 UTC (rev 11028)
@@ -1702,6 +1702,49 @@
@inlineCallbacks
+ def doImplicitScheduling(self, component, inserting, update_state):
+
+ data_changed = False
+ did_implicit_action = False
+
+ # Do scheduling
+ if not self.calendar().isInbox():
+ scheduler = ImplicitScheduler()
+
+ # PUT
+ do_implicit_action, is_scheduling_resource = (yield scheduler.testImplicitSchedulingPUT(
+ self.calendar(),
+ None if inserting else self,
+ component,
+ internal_request=(update_state != ComponentUpdateState.NORMAL),
+ ))
+
+ if do_implicit_action and self.allowImplicitSchedule:
+
+ # Cannot do implicit in sharee's shared calendar
+ isShareeCollection = self.destinationparent.isShareeCollection()
+ if isShareeCollection:
+ raise HTTPError(ErrorResponse(
+ responsecode.FORBIDDEN,
+ (calendarserver_namespace, "sharee-privilege-needed",),
+ description="Sharee's cannot schedule"
+ ))
+
+ new_calendar = (yield scheduler.doImplicitScheduling(self.schedule_tag_match))
+ if new_calendar:
+ if isinstance(new_calendar, int):
+ returnValue(new_calendar)
+ else:
+ self.calendar = new_calendar
+ data_changed = True
+ did_implicit_action = True
+ else:
+ is_scheduling_resource = False
+
+ returnValue((is_scheduling_resource, data_changed, did_implicit_action,))
+
+
+ @inlineCallbacks
def mergePerUserData(self, component, inserting):
"""
Merge incoming calendar data with other user's per-user data in existing calendar data.
@@ -1831,28 +1874,28 @@
# Default/duplicate alarms
self.processAlarms(component, inserting)
-# # Do scheduling
-# implicit_result = (yield self.doImplicitScheduling())
-# if isinstance(implicit_result, int):
-# if implicit_result == ImplicitScheduler.STATUS_ORPHANED_CANCELLED_EVENT:
-# raise ResourceDeletedError("Resource created but immediately deleted by the server.")
-#
-# elif implicit_result == ImplicitScheduler.STATUS_ORPHANED_EVENT:
-#
-# # Now forcibly delete the event
-# if not inserting:
-# yield self.storeRemove()
-# raise ResourceDeletedError("Resource modified but immediately deleted by the server.")
-# else:
-# raise AttendeeAllowedError("Attendee cannot create event for Organizer: %s" % (implicit_result,))
-#
-# else:
-# msg = "Invalid return status code from ImplicitScheduler: %s" % (implicit_result,)
-# log.err(msg)
-# raise InvalidObjectResourceError(msg)
-# else:
-# self.isScheduleObject, data_changed, did_implicit_action = implicit_result
+ # Do scheduling
+ implicit_result = (yield self.doImplicitScheduling())
+ if isinstance(implicit_result, int):
+ if implicit_result == ImplicitScheduler.STATUS_ORPHANED_CANCELLED_EVENT:
+ raise ResourceDeletedError("Resource created but immediately deleted by the server.")
+ elif implicit_result == ImplicitScheduler.STATUS_ORPHANED_EVENT:
+
+ # Now forcibly delete the event
+ if not inserting:
+ yield self.storeRemove()
+ raise ResourceDeletedError("Resource modified but immediately deleted by the server.")
+ else:
+ raise AttendeeAllowedError("Attendee cannot create event for Organizer: %s" % (implicit_result,))
+
+ else:
+ msg = "Invalid return status code from ImplicitScheduler: %s" % (implicit_result,)
+ log.err(msg)
+ raise InvalidObjectResourceError(msg)
+ else:
+ self.isScheduleObject, data_changed, did_implicit_action = implicit_result
+
# Always do the per-user data merge right before we store
component = (yield self.mergePerUserData(component, inserting))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130411/02c2f9ea/attachment-0001.html>
More information about the calendarserver-changes
mailing list