コード例 #1
0
def scan_for_new_quickbook_pages(pages):
    for location in settings['pages']:
        pages_data = settings['pages'][location]
        for src_file_pattern in pages_data['src_files']:
            for qbk_file in glob.glob(src_file_pattern):
                pages.add_qbk_file(qbk_file, location, pages_data)

    pages.save()
コード例 #2
0
ファイル: site_tools.py プロジェクト: Lastique/website
def scan_for_new_quickbook_pages(pages):
    for location in settings['pages']:
        pages_data = settings['pages'][location]
        for src_file_pattern in pages_data['src_files']:
            for qbk_file in glob.glob(src_file_pattern):
                pages.add_qbk_file(qbk_file, location, pages_data)

    pages.save()
コード例 #3
0
def update_quickbook(refresh=False):
    # Now check quickbook files.

    pages = load_pages()

    if not refresh:
        scan_for_new_quickbook_pages(pages)

    # Translate new and changed pages

    pages.convert_quickbook_pages(refresh)

    # Generate 'Index' pages

    downloads = []
    for x in settings['downloads']:
        entries = pages.match_pages(x['matches'], sort=True)
        if 'count' in x:
            entries = entries[:x['count']]
        if entries:
            y = {'anchor': x['anchor'], 'entries': entries}
            if len(entries) == 1:
                y['label'] = x['single']
            else:
                y['label'] = x['plural']
            downloads.append(y)

    index_page_variables = {'pages': pages, 'downloads': downloads}

    for index_page in settings['index-pages']:
        boost_site.util.write_py_template(index_page,
                                          settings['index-pages'][index_page],
                                          index_page_variables)

    # Generate RSS feeds

    if not refresh:
        rss_items = boost_site.state.load('generated/state/rss-items.txt')

        for feed_file in settings['feeds']:
            feed_data = settings['feeds'][feed_file]
            rss_feed = rss_prefix(feed_file, feed_data)

            feed_pages = pages.match_pages(feed_data['matches'])
            if 'count' in feed_data:
                feed_pages = feed_pages[:feed_data['count']]

            for qbk_page in feed_pages:
                item_xml = None

                if qbk_page.loaded:
                    item = generate_rss_item(qbk_page.qbk_file, qbk_page)

                    item['item'] = item['item'].toxml('utf-8').decode('utf-8')
                    rss_items[qbk_page.qbk_file] = item
                    boost_site.state.save(rss_items,
                                          'generated/state/rss-items.txt')

                    rss_feed += item['item']
                elif qbk_page.qbk_file in rss_items:
                    rss_feed += rss_items[qbk_page.qbk_file]['item']
                else:
                    print("Missing entry for %s" % qbk_page.qbk_file)

            rss_feed += rss_postfix(feed_file, feed_data)

            output_file = open(feed_file, 'wb')
            try:
                output_file.write(rss_feed.encode('utf-8'))
            finally:
                output_file.close()

    pages.save()
コード例 #4
0
ファイル: site_tools.py プロジェクト: Lastique/website
def update_quickbook(refresh = False):
    # Now check quickbook files.
    
    pages = load_pages()

    if not refresh:
        scan_for_new_quickbook_pages(pages)
    
    # Translate new and changed pages

    pages.convert_quickbook_pages(refresh)

    # Generate 'Index' pages

    downloads = []
    for x in settings['downloads']:
        entries = pages.match_pages(x['matches'], sort = True)
        if 'count' in x:
            entries = entries[:x['count']]
        if entries:
            y = { 'anchor': x['anchor'], 'entries' : entries }
            if len(entries) == 1:
                y['label'] = x['single']
            else:
                y['label'] = x['plural']
            downloads.append(y)

    index_page_variables = {
        'pages' : pages,
        'downloads' : downloads
    }

    for index_page in settings['index-pages']:
        boost_site.util.write_py_template(
            index_page,
            settings['index-pages'][index_page],
            index_page_variables)

    # Generate RSS feeds

    if not refresh:
        rss_items = boost_site.state.load('generated/state/rss-items.txt')
    
        for feed_file in settings['feeds']:
            feed_data = settings['feeds'][feed_file]
            rss_feed = rss_prefix(feed_file, feed_data)
            
            feed_pages = pages.match_pages(feed_data['matches'])
            if 'count' in feed_data:
                feed_pages = feed_pages[:feed_data['count']]
            
            for qbk_page in feed_pages:
                item_xml = None

                if qbk_page.loaded:
                    item = generate_rss_item(qbk_page.qbk_file, qbk_page)

                    item['item'] = item['item'].toxml('utf-8').decode('utf-8')
                    rss_items[qbk_page.qbk_file] = item
                    boost_site.state.save(rss_items, 'generated/state/rss-items.txt')

                    rss_feed += item['item']
                elif qbk_page.qbk_file in rss_items:
                    rss_feed += rss_items[qbk_page.qbk_file]['item']
                else:
                    print("Missing entry for %s" % qbk_page.qbk_file)

            rss_feed += rss_postfix(feed_file, feed_data)

            output_file = open(feed_file, 'wb')
            try:
                output_file.write(rss_feed.encode('utf-8'))
            finally:
                output_file.close()

    pages.save()