Example #1
0
    def _writeFromPUT( self, body ):

        headers = {}
        headers, body = parseHeadersBody(body, headers)
        lines = string.split( body, '\n' )
        self.edit( lines[0] )

        headers['Format'] = 'text/url'
        new_subject = keywordsplitter(headers)
        headers['Subject'] = new_subject or self.Subject()
        haveheader = headers.has_key
        for key, value in self.getMetadataHeaders():
            if key != 'Format' and not haveheader(key):
                headers[key] = value
        
        self.editMetadata(title=headers['Title'],
                          subject=headers['Subject'],
                          description=headers['Description'],
                          contributors=headers['Contributors'],
                          effective_date=headers['Effective_date'],
                          expiration_date=headers['Expiration_date'],
                          format=headers['Format'],
                          language=headers['Language'],
                          rights=headers['Rights'],
                          )
Example #2
0
 def handleText(self, text, format=None, stx_level=None):
     """ Handles the raw text, returning headers, body, format """
     headers = {}
     if not format:
         format = self.guessFormat(text)
     if format == 'html':
         parser = SimpleHTMLParser()
         parser.feed(text)
         headers.update(parser.metatags)
         if parser.title:
             headers['Title'] = parser.title
         body = bodyfinder(text)
     else:
         headers, body = parseHeadersBody(text, headers)
         if stx_level:
             self._stx_level = stx_level
     return headers, body, format
Example #3
0
 def handleText(self, text, format=None, stx_level=None):
     """ Handles the raw text, returning headers, body, format """
     headers = {}
     if not format:
         format = self.guessFormat(text)
     if format == 'html':
         parser = SimpleHTMLParser()
         parser.feed(text)
         headers.update(parser.metatags)
         if parser.title:
             headers['Title'] = parser.title
         body = bodyfinder(text)
     else:
         headers, body = parseHeadersBody(text, headers)
         if stx_level:
             self._stx_level = stx_level
     return headers, body, format
Example #4
0
    def edit(self, text_format, text, file=''):
        """
        Edit the Document
        """
        self.text = text
        headers = {}
        if file and (type(file) is not type('')):
            contents = file.read()
            if contents:
                text = self.text = contents

        # Now parse out HTML if its applicable, or the plain text,
        # getting any headers passed along in the document
        bodyfound = bodyfinder.search(text)
        ishtml = (text_format == 'html') or (bodyfound is not None)
        if ishtml:
            parser = SimpleHTMLParser()
            parser.feed(text)
            headers.update(parser.metatags)
            if parser.title: headers['Title'] = parser.title
            if bodyfound:
                text = self.text = bodyfound.group('bodycontent')
            text_format = self.text_format = 'html'
        else:
            headers, text = parseHeadersBody(text, headers)
            text_format = self.text_format = 'structured-text'
            self.text = text

        headers['Format'] = self.Format()
        haveheader = headers.has_key
        for key, value in self.getMetadataHeaders():
            if key != 'Format' and not haveheader(key):
                headers[key] = value

        self.editMetadata(
            title=headers['Title'],
            subject=headers['Subject'],
            description=headers['Description'],
            contributors=headers['Contributors'],
            effective_date=headers['Effective_date'],
            expiration_date=headers['Expiration_date'],
            format=headers['Format'],
            language=headers['Language'],
            rights=headers['Rights'],
        )
        self._parse()
Example #5
0
    def edit(self, text_format, text, file=''):
        """
        Edit the Document
        """
        self.text = text
        headers = {}
        if file and (type(file) is not type('')):
            contents=file.read()
            if contents:
                text = self.text = contents

        # Now parse out HTML if its applicable, or the plain text,
        # getting any headers passed along in the document
        bodyfound = bodyfinder.search(text)
        ishtml = (text_format == 'html') or (bodyfound is not None)
        if ishtml:
            parser = SimpleHTMLParser()
            parser.feed(text)
            headers.update(parser.metatags)
            if parser.title: headers['Title'] = parser.title
            if bodyfound:
                text = self.text = bodyfound.group('bodycontent')
            text_format = self.text_format = 'html'
        else:
            headers, text = parseHeadersBody(text, headers)
            text_format = self.text_format = 'structured-text'
            self.text = text

        headers['Format'] = self.Format()
        haveheader = headers.has_key
        for key, value in self.getMetadataHeaders():
            if key != 'Format' and not haveheader(key):
                headers[key] = value
        
        self.editMetadata(title=headers['Title'],
                          subject=headers['Subject'],
                          description=headers['Description'],
                          contributors=headers['Contributors'],
                          effective_date=headers['Effective_date'],
                          expiration_date=headers['Expiration_date'],
                          format=headers['Format'],
                          language=headers['Language'],
                          rights=headers['Rights'],
                          )
        self._parse()
Example #6
0
    def handleText(self, text, format=None):
        """ Handles the raw text, returning headers, body, cooked, format """
        headers = {}
        body = cooked = text
        if not format:
            format = self.guessFormat(text)

        if format == 'html':
            parser = SimpleHTMLParser()
            parser.feed(text)
            headers.update(parser.metatags)
            if parser.title:
                headers['Title'] = parser.title
            bodyfound = bodyfinder.search(text)
            if bodyfound:
                cooked = body = bodyfound.group('bodycontent')
        else:
            headers, body = parseHeadersBody(text, headers)
            cooked = _format_stx(text=body)

        return headers, body, cooked, format
Example #7
0
    def handleText(self, text, format=None):
        """ Handles the raw text, returning headers, body, cooked, format """
        headers = {}
        body = cooked = text
        if not format:
            format = self.guessFormat(text)

        if format == 'html':
            parser = SimpleHTMLParser()
            parser.feed(text)
            headers.update(parser.metatags)
            if parser.title:
                headers['Title'] = parser.title
            bodyfound = bodyfinder.search(text)
            if bodyfound:
                cooked = body = bodyfound.group('bodycontent')
        else:
            headers, body = parseHeadersBody(text, headers)
            cooked = _format_stx(text=body)

        return headers, body, cooked, format
Example #8
0
    def PUT(self, REQUEST, RESPONSE):
        """Handle HTTP (and presumably FTP?) PUT requests"""
        try:
            self.dav__init(REQUEST, RESPONSE)

            headers = {}
            for k, v in self.getMetadataHeaders():
                if k != 'Format':
                    headers[k] = v

            body = REQUEST.get( 'BODY', '')
            headers, body = parseHeadersBody( body, headers )

            if not headers.has_key( 'Format' ): # not supplied in headers
                from NullPortalResource import sniffContentType
                sniffFmt = sniffContentType( self.getId(), body )
                fmt = REQUEST.get_header( 'content-type', sniffFmt )
                headers[ 'Format' ] = fmt

            self.editMetadata( title=headers['Title']
                             , subject=headers['Subject']
                             , description=headers['Description']
                             , contributors=headers['Contributors']
                             , effective_date=headers['Effective_date']
                             , expiration_date=headers['Expiration_date']
                             , format=headers['Format']
                             , language=headers['Language']
                             , rights=headers['Rights']
                             )
            self.edit( title=self.Title()
                     , description=self.Description()
                     , text=body
                     )
            RESPONSE.setStatus(204)
            return RESPONSE
        except:
            import traceback
            traceback.print_exc()
            raise
Example #9
0
    def PUT(self, REQUEST, RESPONSE):
        """Handle HTTP (and presumably FTP?) PUT requests"""
        try:
            self.dav__init(REQUEST, RESPONSE)

            headers = {}
            for k, v in self.getMetadataHeaders():
                if k != 'Format':
                    headers[k] = v

            body = REQUEST.get('BODY', '')
            headers, body = parseHeadersBody(body, headers)

            if not headers.has_key('Format'):  # not supplied in headers
                from NullPortalResource import sniffContentType
                sniffFmt = sniffContentType(self.getId(), body)
                fmt = REQUEST.get_header('content-type', sniffFmt)
                headers['Format'] = fmt

            self.editMetadata(title=headers['Title'],
                              subject=headers['Subject'],
                              description=headers['Description'],
                              contributors=headers['Contributors'],
                              effective_date=headers['Effective_date'],
                              expiration_date=headers['Expiration_date'],
                              format=headers['Format'],
                              language=headers['Language'],
                              rights=headers['Rights'])
            self.edit(title=self.Title(),
                      description=self.Description(),
                      text=body)
            RESPONSE.setStatus(204)
            return RESPONSE
        except:
            import traceback
            traceback.print_exc()
            raise
Example #10
0
    def handleText(self, text, format=None, stx_level=None):
        """ Handles the raw text, returning headers, body, cooked, format """
        headers = {}
        body = cooked = text
        level = stx_level or self._stx_level

        if not format:
            format = self.guessFormat(text)

        if format == 'html':
            parser = SimpleHTMLParser()
            parser.feed(text)
            headers.update(parser.metatags)
            if parser.title:
                headers['Title'] = parser.title
            bodyfound = bodyfinder(text)
            if bodyfound:
                cooked = body = bodyfound
        else:
            headers, body = parseHeadersBody(text, headers)
            cooked = _format_stx(text=body, level=level)
            self._stx_level = level

        return headers, body, cooked, format