def PUT(self, REQUEST=None, RESPONSE=None):
        """WebDAV method to replace self with a new resource. This is also
        used when initialising an object just created from a NullResource.
        
        This will look up an IRawWriteFile adapter on self and write to it,
        line-by-line, from the request body.
        """
        request = REQUEST is not None and REQUEST or self.REQUEST
        response = RESPONSE is not None and RESPONSE or request.response

        self.dav__init(request, response)
        self.dav__simpleifhandler(request, response, refresh=1)

        infile = request.get('BODYFILE', None)
        if infile is None:
            raise MethodNotAllowed(
                "Cannot complete PUT request: No BODYFILE in request")

        writer = IRawWriteFile(self, None)
        if writer is None:
            raise MethodNotAllowed(
                "Cannot complete PUT request: No IRawWriteFile adapter found")

        contentTypeHeader = request.get_header('content-type', None)

        if contentTypeHeader is not None:
            msg = Message()
            msg['Content-Type'] = contentTypeHeader

            mimeType = msg.get_content_type()
            if mimeType is not None:
                writer.mimeType = mimeType

            charset = msg.get_param('charset')
            if charset is not None:
                writer.encoding = charset

        try:
            for chunk in infile:
                writer.write(chunk)
        finally:
            writer.close()

        modified(self)
        return response
 def PUT(self, REQUEST=None, RESPONSE=None):
     """WebDAV method to replace self with a new resource. This is also
     used when initialising an object just created from a NullResource.
     
     This will look up an IRawWriteFile adapter on self and write to it,
     line-by-line, from the request body.
     """
     request = REQUEST is not None and REQUEST or self.REQUEST
     response = RESPONSE is not None and RESPONSE or request.response
     
     self.dav__init(request, response)
     self.dav__simpleifhandler(request, response, refresh=1)
     
     infile = request.get('BODYFILE', None)
     if infile is None:
         raise MethodNotAllowed("Cannot complete PUT request: No BODYFILE in request")
     
     writer = IRawWriteFile(self, None)
     if writer is None:
         raise MethodNotAllowed("Cannot complete PUT request: No IRawWriteFile adapter found")
     
     contentTypeHeader = request.get_header('content-type', None)
     
     if contentTypeHeader is not None:
         msg = Message()
         msg['Content-Type'] = contentTypeHeader
         
         mimeType = msg.get_content_type()
         if mimeType is not None:
             writer.mimeType = mimeType
         
         charset = msg.get_param('charset')
         if charset is not None:
             writer.encoding = charset
     
     try:
         for chunk in infile:
             writer.write(chunk)
     finally:
         writer.close()
     
     modified(self)
     return response