[CalendarServer-changes] [1875]
CalendarClientSimulator/trunk/src/calendarclient.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Sep 13 12:55:50 PDT 2007
Revision: 1875
http://trac.macosforge.org/projects/calendarserver/changeset/1875
Author: cdaboo at apple.com
Date: 2007-09-13 12:55:50 -0700 (Thu, 13 Sep 2007)
Log Message:
-----------
Better error handling.
Modified Paths:
--------------
CalendarClientSimulator/trunk/src/calendarclient.py
Modified: CalendarClientSimulator/trunk/src/calendarclient.py
===================================================================
--- CalendarClientSimulator/trunk/src/calendarclient.py 2007-09-13 19:51:12 UTC (rev 1874)
+++ CalendarClientSimulator/trunk/src/calendarclient.py 2007-09-13 19:55:50 UTC (rev 1875)
@@ -378,12 +378,12 @@
# Generate accepted data and write to main calendar
caldata = icalutils.generateiTIPSave(calendar, me)
- self.createEvent(caldata)
-
- # Generate reply and POST
- self.log(" Sending iTIP Reply from: %s to: %s" % (self.user, organizer.split("/")[-2],))
- caldata, recipient = icalutils.generateiTIPReply(calendar, me)
- self.doSchedule(self.outbox, caldata, headers={"originator":me, "recipient":recipient})
+ if self.createEvent(caldata):
+
+ # Generate reply and POST
+ self.log(" Sending iTIP Reply from: %s to: %s" % (self.user, organizer.split("/")[-2],))
+ caldata, recipient = icalutils.generateiTIPReply(calendar, me)
+ self.doSchedule(self.outbox, caldata, headers={"originator":me, "recipient":recipient})
def processiTIPReply(self, calendar):
# Extract attendee from iTIP reply
@@ -396,11 +396,11 @@
if entry["uid"] == uid:
break
else:
- return
+ return True
# Update calendar data with attendee status
caldata = icalutils.updateAttendeeStatus(entry["data"], attendee)
- self.putEvent(href, caldata)
+ return self.putEvent(href, caldata)
def doCreateEvent(self, organizer=None, attendees=None):
caldata = icalutils.generateVEVENT(organizer, attendees)
@@ -408,27 +408,29 @@
def createEvent(self, caldata):
uri = "%s%s.ics" % (self.calendar, uuid.uuid4(),)
- self.putEvent(uri, caldata, True)
- return uri
+ if self.putEvent(uri, caldata, True):
+ return uri
+ else:
+ return None
def putEvent(self, uri, caldata, creating=False):
try:
status, _ignore_headers, _ignore_data = self.doRequest(uri, "PUT", {"Content-Type": "text/calendar"}, caldata)
if creating and (status != 201) or not creating and status not in (200, 204):
self.log("Event write failed with status: %d for user: %s" % (status, self.user,))
- return
+ return False
except Exception, e:
self.log("Event write failed with exception: %s for user: %s" % (e, self.user,))
- return
+ return False
try:
status, headers, data = self.doRequest(uri, "GET")
if status != 200:
self.log("Event read failed with status: %d for user: %s" % (status, self.user,))
- return
+ return False
except Exception, e:
self.log("Event read failed with exception: %s for user: %s" % (e, self.user,))
- return
+ return False
for header, value in headers:
if header == "etag":
@@ -440,6 +442,8 @@
}
self.writeCache()
break
+
+ return True
def getEvent(self, uri):
@@ -481,17 +485,18 @@
# Create invite on main calendar
new_uri = self.doCreateEvent(organizer, attendees)
- # Do free busy lookup
- fbdata = icalutils.generateVFREEBUSY(organizer, attendees)
- self.doSchedule(self.outbox, fbdata, headers={"originator":organizer, "recipient":", ".join((organizer,) + tuple(attendees))})
+ if new_uri:
+ # Do free busy lookup
+ fbdata = icalutils.generateVFREEBUSY(organizer, attendees)
+ self.doSchedule(self.outbox, fbdata, headers={"originator":organizer, "recipient":", ".join((organizer,) + tuple(attendees))})
+
+ # TODO: Update invite (simulates a time shift after f-b lookup)
+
+ # Do outbox POST
+ entry = self.data["calendar_data"][new_uri]
+ caldata = entry["data"].replace("VERSION:", "METHOD:REQUEST\nVERSION:")
+ self.doSchedule(self.outbox, caldata, headers={"originator":organizer, "recipient":", ".join(attendees)})
- # TODO: Update invite (simulates a time shift after f-b lookup)
-
- # Do outbox POST
- entry = self.data["calendar_data"][new_uri]
- caldata = entry["data"].replace("VERSION:", "METHOD:REQUEST\nVERSION:")
- self.doSchedule(self.outbox, caldata, headers={"originator":organizer, "recipient":", ".join(attendees)})
-
def doRequest(self, ruri, method='GET', headers={}, data=None):
if self.authType == "basic":
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070913/a560f5ec/attachment.html
More information about the calendarserver-changes
mailing list