def list_security_issues(self): ''' Fills in issues and topissues with security issues information. ''' issues = glob.glob('templates/security/PMASA-*') issues.sort(key=lambda x: int(x[24:29]) * 100 - int(x[30:])) for issue in issues: xmldata = XML(open(issue, 'r').read()) name = os.path.basename(issue) self.data['issues'].append({ 'name': name, 'link': '%ssecurity/%s' % (BASE_URL, self.get_outname(name)), 'fulllink': '%s%ssecurity/%s' % ( SERVER, BASE_URL, self.get_outname(name) ), 'summary': str(xmldata.select( 'def[@function="announcement_summary"]/text()' )), 'date': helper.date.DateTime.parse(str(xmldata.select( 'def[@function="announcement_date"]/text()' ))), 'cves': str(xmldata.select( 'def[@function="announcement_cve"]/text()' )).split(' '), 'versions': str(xmldata.select( 'def[@function="announcement_affected"]/text()' )), }) self.data['topissues'] = self.data['issues'][:TOP_ISSUES]
def generate_sitemap(self): ''' Generates list of pages with titles. ''' self.data['sitemap'] = [] self.data['sitemapxml'] = [] helper.log.dbg('Generating sitemap:') for root, dirs, files in os.walk(TEMPLATES): if '.svn' in dirs: dirs.remove('.svn') # don't visit .svn directories if '.git' in dirs: dirs.remove('.git') # don't visit .git directories files.sort() root_dir = root[len(TEMPLATES):].strip('/') if len(root_dir) > 0: root_dir += '/' for filename in files: name, ext = os.path.splitext(filename) if ext != '.tpl' and name[:6] != 'PMASA-': continue if name[0] in ['_', '.']: continue if filename in ['index.xml.tpl', 'sitemap.xml.tpl', '404.tpl']: continue helper.log.dbg('- %s' % filename) xmldata = XML(open(os.path.join(root, filename), 'r').read()) title = str(xmldata.select( 'def[@function="page_title"]/text()' )) title = title.strip() if len(title) == 0: title = str(xmldata.select( 'def[@function="announcement_id"]/text()' )) title = title.strip() if len(title) == 0: title = 'Index' link = root_dir + self.get_outname(name) sitemap = { 'link': link, 'loc': '%s%s%s' % (SERVER, BASE_URL, link), 'title': title } if name[:6] != 'PMASA-': self.data['sitemap'].append(sitemap) sitemap.update(self.get_sitemap_data(root_dir + name)) self.data['sitemapxml'].append(sitemap) for link in data.sitemap.ENTRIES: sitemap = { 'loc': SERVER + link, } sitemap.update(self.get_sitemap_data(link)) self.data['sitemapxml'].append(sitemap)
def extract_href(fragment): if isinstance(fragment, (Element, Fragment)): stream = tag.body(fragment).generate() else : self.log.debug("Extracting href from %s", fragment) stream = XML('<body>%s</body>' % (unicode(fragment),)) for x in stream.select('a[@href]') : if x[0] == 'START' : return x[1][1].get('href')