Exemple #1
0
        def wrapper(*args, **kwargs):
            
            page = callback(*args, **kwargs)
            log.warn(page['content-type'])
            if page['content-type'] in overrides:
                page['content-type'] = overrides[page['content-type']]
            log.warn(page['content-type'])

            page['data'] = BeautifulSoup(render_markup(page['data'],page['content-type']))
            plugins.apply_all(kwargs['page'], page['data'], request=request, response=response, indexing=False)

            # TODO: normalize links, run specific plugins, etc.

            # Normalize legacy keywords
            keywords = []
            for k in [u'keywords', u'tags']:
                if k in page['headers'].keys():
                    keywords.extend(page['headers'][k].split(','))
            page['headers']['keywords'] = ','.join(list(set([k.strip() for k in keywords])))

            # Inject any per-page CSS
            if u'css' not in page['headers'].keys():
                page['headers']['css'] = None

            # clean up requested URI
            page['headers']['url'] = urlparse.urlunparse(( request.urlparts.scheme, request.urlparts.netloc, os.path.abspath(request.urlparts.path), None, None, None ))
            page['headers']['permalink'] = page['headers']['url'] + "#%s" % munge_string(page['headers']['title'])
            return page
Exemple #2
0
    def parse_mapping_page(page, transform):
        result = {}
        p = WikiController.get_page(page)
        if not p:
            log.warn("Could not load %s" % page)
            return result

        # prepare to parse only <pre> tags (so that we can have multiple maps organized by sections)
        soup = BeautifulSoup(render_markup(p.body, p.mime_type))

        all_sections = u''.join(map(lambda t: str(t.string), soup.find_all('pre'))).strip()
        # now that we have the full map, let's build the schema hash
        for line in all_sections.split('\n'):
            try:
                (link, replacement) = line.strip().split(' ',1)
                result.update(transform(link, replacement))
            except ValueError as e:
                log.warn("skipping line '%s': %s" % (line, e))
                pass
        return result