示例#1
0
    def _visit_story(self, dirname, name):
        filepath = os.path.join(dirname,
                                name + '.' + Gyre.config.file_extension)
        try:
            s = os.stat(filepath)
        except OSError:
            return

        story = Gyre.Entity(self._template_headers(dirname))
        story.mtime = s.st_mtime

        (headers, body) = self._load_file(filepath)
        for (key, val) in headers.items():
            setattr(story, key.lower(), val)

        story.mtime = int(story.mtime)
        categorystr = dirname[len(self.contentdir) + 1:]
        if categorystr:
            story.category = string.split(categorystr, '/')
        else:
            story.category = []
        story.body = body

        if not story.id:
            uid = list(story.category)
            uid.append(name)
            story.id = string.join(uid, '/')

        Gyre.config.store.update(story)
示例#2
0
    def updateStore(self):
        patchnames = map(string.strip,
                         os.popen(self.tlapath + ' logs').readlines())
        stories = []
        for patch in patchnames:
            p = os.popen(self.tlapath + ' cat-log ' + patch)
            msg = rfc822.Message(p)
            full_tla_version = msg['Archive'] + '/' + msg['Revision']
            body = p.read().strip()
            body = cgi.escape(body)
            body = body.replace('\n\n', '\n\n<p> ')
            if not body:
                body = '(no detail message)'

            story = Gyre.Entity()
            story.mtime = int(
                time.mktime(
                    time.strptime(msg['Standard-date'],
                                  '%Y-%m-%d %H:%M:%S GMT')))
            story.subject = cgi.escape(msg['Summary'])
            story.body = body
            story.category = self.category
            story.id = msg['Revision']

            for header in ['Archive', 'Revision', 'Creator']:
                setattr(story, header.lower(), msg[header])
            story.full_tla_version = full_tla_version
            story.full_tla_version_span = \
                '<span class="tla-version">' + full_tla_version + '</span>'

            stories.append(story)

        for story in stories:
            Gyre.config.store.update(story)
示例#3
0
    def _visit_story(self, dirname, name):
        filepath = os.path.join(dirname,
                                name + '.' + Gyre.config.file_extension)
        try:
            s = os.stat(filepath)
        except OSError:
            return

        story = Gyre.Entity(Gyre.config.protostory)
        story.mtime = s.st_mtime

        f = open(filepath)
        headers = rfc822.Message(f)
        for (key, val) in headers.items():
            setattr(story, key.lower(), val.decode('utf-8'))
        body = f.read().decode('utf-8')
        f.close()

        story.mtime = int(story.mtime)
        categorystr = dirname[len(self.contentdir) + 1:]
        if categorystr:
            story.category = string.split(categorystr, '/')
        else:
            story.category = []
        story.body = body

        uid = list(story.category)
        uid.append(name)
        story.id = string.join(uid, '/')

        Gyre.config.store.update(story)
示例#4
0
 def _template_headers(self, uncanonicalized_dirname):
     dirname = self._canonical_dirname(uncanonicalized_dirname)
     if dirname not in self.template_headers_cache:
         filepath = os.path.join(uncanonicalized_dirname, '__template__')
         if dirname:
             parent = self._template_headers(
                 os.path.dirname(uncanonicalized_dirname))
         else:
             parent = Gyre.config.protostory
         try:
             p = self._load_file(filepath)[0]
         except IOError:
             p = {}
         self.template_headers_cache[dirname] = Gyre.Entity(_parent=parent,
                                                            _props=p)
     return self.template_headers_cache[dirname]