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)
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)
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)
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]