yield self.createCalendar(request) except ValueError, e: log.error("Error while handling MKCALENDAR: %s" % (e, )) raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, str(e))) set_supported_component_set = False if doc is not None: makecalendar = doc.root_element if not isinstance(makecalendar, caldavxml.MakeCalendar): error = ("Non-%s element in MKCALENDAR request body: %s" % (caldavxml.MakeCalendar.name, makecalendar)) log.error("Error: {err}", err=error) raise HTTPError( StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, error)) errors = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT) got_an_error = False if makecalendar.children: # mkcalendar -> set -> prop -> property* for property in makecalendar.children[0].children[0].children: try: if property.qname() == ( caldavxml.caldav_namespace, "supported-calendar-component-set"): yield self.setSupportedComponentSet(property) set_supported_component_set = True else: yield self.writeProperty(property, request) except HTTPError: errors.add(Failure(), property)
StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, str(e))) if doc is not None: # Can ignore Prefer:return=minimal as we don't return a body for success by default # Parse response body mkcol = doc.root_element if not isinstance(mkcol, mkcolxml.MakeCollection): error = ("Non-%s element in MKCOL request body: %s" % (mkcolxml.MakeCollection.name, mkcol)) log.error("Error: {err}", err=error) raise HTTPError( StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, error)) errors = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT) got_an_error = False set_supported_component_set = False if mkcol.children: # mkcol -> set -> prop -> property* properties = mkcol.children[0].children[0].children # First determine the resource type rtype = None for property in properties: if isinstance(property, davxml.ResourceType): if rtype: error = "Multiple {DAV:}resourcetype properties in MKCOL request body: %s" % ( mkcol, ) log.error("Error: {err}", err=error)
if doc is None: error = "Request XML body is required." log.error("Error: {err}", error) raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error)) # # Parse request # update = doc.root_element if not isinstance(update, davxml.PropertyUpdate): error = ("Request XML body must be a propertyupdate element." % (davxml.PropertyUpdate.sname(),)) log.error("Error: {err}", error) raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error)) responses = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT) undoActions = [] gotError = False # Look for Prefer header prefer = request.headers.getHeader("prefer", {}) returnMinimal = any([key == "return" and value == "minimal" for key, value, _ignore_args in prefer]) try: # # Update properties # for setOrRemove in update.children: assert len(setOrRemove.children) == 1 container = setOrRemove.children[0]
try: doc = (yield davXMLFromStream(request.stream)) yield self.createCalendar(request) except ValueError, e: log.error("Error while handling MKCALENDAR: %s" % (e,)) raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, str(e))) set_supported_component_set = False if doc is not None: makecalendar = doc.root_element if not isinstance(makecalendar, caldavxml.MakeCalendar): error = "Non-%s element in MKCALENDAR request body: %s" % (caldavxml.MakeCalendar.name, makecalendar) log.error("Error: {err}", err=error) raise HTTPError(StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, error)) errors = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT) got_an_error = False if makecalendar.children: # mkcalendar -> set -> prop -> property* for property in makecalendar.children[0].children[0].children: try: if property.qname() == (caldavxml.caldav_namespace, "supported-calendar-component-set"): yield self.setSupportedComponentSet(property) set_supported_component_set = True else: yield self.writeProperty(property, request) except HTTPError: errors.add(Failure(), property) got_an_error = True else:
StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, str(e)) ) if doc is not None: # Can ignore Prefer:return=minimal as we don't return a body for success by default # Parse response body mkcol = doc.root_element if not isinstance(mkcol, mkcolxml.MakeCollection): error = ("Non-%s element in MKCOL request body: %s" % (mkcolxml.MakeCollection.name, mkcol)) log.error("Error: {err}", err=error) raise HTTPError(StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, error)) errors = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT) got_an_error = False set_supported_component_set = False if mkcol.children: # mkcol -> set -> prop -> property* properties = mkcol.children[0].children[0].children # First determine the resource type rtype = None for property in properties: if isinstance(property, davxml.ResourceType): if rtype: error = "Multiple {DAV:}resourcetype properties in MKCOL request body: %s" % (mkcol,) log.error("Error: {err}", err=error) raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error))