[CalendarServer-changes] [4278] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri May 15 14:26:56 PDT 2009


Revision: 4278
          http://trac.macosforge.org/projects/calendarserver/changeset/4278
Author:   sagen at apple.com
Date:     2009-05-15 14:26:56 -0700 (Fri, 15 May 2009)
Log Message:
-----------
Add error-descriptions to valid-calendar-data

Modified Paths:
--------------
    CalendarServer/trunk/run
    CalendarServer/trunk/twistedcaldav/method/put_common.py
    CalendarServer/trunk/twistedcaldav/method/report_calquery.py
    CalendarServer/trunk/twistedcaldav/resource.py
    CalendarServer/trunk/twistedcaldav/schedule.py
    CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py

Modified: CalendarServer/trunk/run
===================================================================
--- CalendarServer/trunk/run	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/run	2009-05-15 21:26:56 UTC (rev 4278)
@@ -727,7 +727,7 @@
 
 caldavtester="${top}/CalDAVTester";
 
-svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4275;
+svn_get "CalDAVTester" "${caldavtester}" "${svn_uri_base}/CalDAVTester/trunk" 4277;
 
 #
 # PyFlakes

Modified: CalendarServer/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py	2009-05-15 21:26:56 UTC (rev 4278)
@@ -320,13 +320,13 @@
                             self.calendar = Component.fromString(self.calendar)
                     except ValueError, e:
                         log.err(str(e))
-                        raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                        raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Can't parse calendar data"))
                         
                 # Valid calendar data check
                 result, message = self.validCalendarDataCheck()
                 if not result:
                     log.err(message)
-                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=message))
                     
                 # Valid calendar data for CalDAV check
                 result, message = self.validCalDAVDataCheck()
@@ -675,8 +675,9 @@
             try:
                 result = self.calendar.truncateRecurrence(config.MaxInstancesForRRULE)
             except (ValueError, TypeError), ex:
-                log.err("Cannot truncate calendar resource: %s" % (ex,))
-                raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                msg = "Cannot truncate calendar resource: %s" % (ex,)
+                log.err(msg)
+                raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg))
             if result:
                 self.calendardata = str(self.calendar)
                 return result
@@ -900,8 +901,9 @@
                 NumberOfRecurrencesWithinLimits(PCDATAElement(str(ex.max_allowed)))
             ))
         except (ValueError, TypeError), ex:
-            log.err("Cannot index calendar resource: %s" % (ex,))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            msg = "Cannot index calendar resource: %s" % (ex,)
+            log.err(msg)
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg))
 
         content_type = self.request.headers.getHeader("content-type")
         if content_type is not None:
@@ -970,8 +972,9 @@
             
                     returnValue(StatusResponse(responsecode.CREATED, "Resource created but immediately deleted by the server."))
                 else:
-                    log.err("Invalid return status code from ImplicitScheduler: %s" % (implicit_result,))
-                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                    msg = "Invalid return status code from ImplicitScheduler: %s" % (implicit_result,)
+                    log.err(msg)
+                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg))
             else:
                 is_scheduling_resource, data_changed, did_implicit_action = implicit_result
 
@@ -1102,7 +1105,7 @@
                 self.rollback.Rollback()
 
             if isinstance(err, InvalidOverriddenInstanceError):
-                raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Invalid overridden instance"))
             elif isinstance(err, TooManyInstancesError):
                 raise HTTPError(ErrorResponse(
                     responsecode.FORBIDDEN,

Modified: CalendarServer/trunk/twistedcaldav/method/report_calquery.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_calquery.py	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/twistedcaldav/method/report_calquery.py	2009-05-15 21:26:56 UTC (rev 4278)
@@ -73,8 +73,9 @@
     query_timezone = None
     query_tz = calendar_query.timezone
     if query_tz is not None and not query_tz.valid():
-        log.err("CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,))
-        raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+        msg = "CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,)
+        log.err(msg)
+        raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg))
     if query_tz:
         filter.settimezone(query_tz)
         query_timezone = tuple(calendar_query.timezone.calendar().subcomponents())[0]

Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/twistedcaldav/resource.py	2009-05-15 21:26:56 UTC (rev 4278)
@@ -300,7 +300,8 @@
             if not property.valid():
                 raise HTTPError(ErrorResponse(
                     responsecode.CONFLICT,
-                    (caldav_namespace, "valid-calendar-data")
+                    (caldav_namespace, "valid-calendar-data"),
+                    description="Invalid property"
                 ))
 
         elif property.qname() == (caldav_namespace, "schedule-calendar-transp"):

Modified: CalendarServer/trunk/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/schedule.py	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/twistedcaldav/schedule.py	2009-05-15 21:26:56 UTC (rev 4278)
@@ -148,7 +148,8 @@
             if not property.valid():
                 raise HTTPError(ErrorResponse(
                     responsecode.CONFLICT,
-                    (caldav_namespace, "valid-calendar-data")
+                    (caldav_namespace, "valid-calendar-data"),
+                    description="Invalid property"
                 ))
 
         elif property.qname() == (caldav_namespace, "calendar-free-busy-set"):

Modified: CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py	2009-05-15 21:26:03 UTC (rev 4277)
+++ CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py	2009-05-15 21:26:56 UTC (rev 4278)
@@ -231,7 +231,7 @@
         except:
             # FIXME: Bare except
             log.err("Error while handling %s: %s" % (self.method, Failure(),))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Can't parse calendar data"))
 
     def checkAuthorization(self):
         raise NotImplementedError
@@ -257,17 +257,17 @@
             self.calendar.validCalendarForCalDAV()
         except ValueError, e:
             log.err("%s request calendar component is not valid:%s %s" % (self.method, e, self.calendar,))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Calendar component is not valid"))
     
         # Must have a METHOD
         if not self.calendar.isValidMethod():
             log.err("%s request must have valid METHOD property in calendar component: %s" % (self.method, self.calendar,))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Must have valid METHOD property"))
         
         # Verify iTIP behavior
         if not self.calendar.isValidITIP():
             log.err("%s request must have a calendar component that satisfies iTIP requirements: %s" % (self.method, self.calendar,))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Must have a calendar component that satisfies iTIP requirements"))
 
         # X-CALENDARSERVER-ACCESS is not allowed in Outbox POSTs
         if self.calendar.hasProperty(Component.ACCESS_PROPERTY):
@@ -281,12 +281,12 @@
                 vfreebusies = [v for v in self.calendar.subcomponents() if v.name() == "VFREEBUSY"]
                 if len(vfreebusies) != 1:
                     log.err("iTIP data is not valid for a VFREEBUSY request: %s" % (self.calendar,))
-                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="iTIP data is not valid for a VFREEBUSY request"))
                 dtstart = vfreebusies[0].getStartDateUTC()
                 dtend = vfreebusies[0].getEndDateUTC()
                 if dtstart is None or dtend is None:
                     log.err("VFREEBUSY start/end not valid: %s" % (self.calendar,))
-                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+                    raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="VFREEBUSY start/end not valid"))
                 self.timeRange = TimeRange(start="20000101T000000Z", end="20070102T000000Z")
                 self.timeRange.start = dtstart
                 self.timeRange.end = dtend
@@ -578,7 +578,7 @@
             
         else:
             log.err("Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description="Unknown iTIP METHOD for security checks"))
 
     def finalChecks(self):
         """
@@ -780,8 +780,9 @@
             yield self.checkAttendeeAsOriginator()
             
         else:
-            log.err("Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),))
-            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
+            msg = "Unknown iTIP METHOD for security checks: %s" % (self.calendar.propertyValue("METHOD"),)
+            log.err(msg)
+            raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data"), description=msg))
 
 class IMIPScheduler(Scheduler):
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090515/d68ff43e/attachment-0001.html>


More information about the calendarserver-changes mailing list