Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion blo/blog.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ def main():
slug = opts.action[1]
blog_action.post(slug, opts.type)

return 0


if __name__ == "__main__":
log.addHandler(logging.StreamHandler(sys.stdout))
log.setLevel(logging.DEBUG)
sys.exit(main())
sys.exit(main())
28 changes: 21 additions & 7 deletions blo/page_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,20 @@ def split_into_pages(items, per_page):
return [items[i:i + per_page] for i in range(0, len(items), per_page)]


class BloError(Exception):
def __init__(self, message):
self.message = message

def __str__(self):
return self.message


class PageGenerator:
def __init__(self, config):
self.config = config
self.jinja_env = jinja2.Environment(
loader=jinja2.FileSystemLoader(self.config['template_dir']))
self.md = markdown.Markdown(
extensions=['markdown.extensions.meta',
'markdown.extensions.codehilite'])
self.md = markdown.Markdown(extensions=['meta', 'codehilite', 'fenced_code', 'tables'])
self.content_aggregator = ContentAggregator(config)

def _generate_html(self, template_name, page_vars):
Expand Down Expand Up @@ -111,6 +117,8 @@ def _generate_html_page_and_path(self, content):
page_vars['page_content'] = page_html
page_vars['page_author'] = self.config['site']['author']
page_vars['page_date'] = page_vars.get('page_date_time', '').split(' ')[0]
if 'page_tags' not in page_vars:
raise BloError("Missing tags")
page_vars['page_tags'] = [tag for tag in page_vars['page_tags'].split(', ') if tag]
if 'page_date_time' in page_vars:
page_vars['page_date_time'] = \
Expand Down Expand Up @@ -159,10 +167,16 @@ def generate_all(self):
"""
# render page
for draft in os.listdir(self.config['pages_dir']):
with open(os.path.join(self.config['pages_dir'], draft)) as f:
path = os.path.join(self.config['pages_dir'], draft)
with open(path) as f:
content = f.read()

html_page, html_page_path = self._generate_html_page_and_path(content)
try:
html_page, html_page_path = self._generate_html_page_and_path(content)
except BloError as blo_error:
blo_error.message += " in %s" % path
raise
except Exception as exc:
raise BloError("Caught exception while generating %s" % path) from exc
self._create_html_file(html_page, html_page_path)

# render index page
Expand All @@ -189,4 +203,4 @@ def generate_all(self):

# render rss
xml_page = self._generate_xml_rss()
self._create_rss_file(xml_page, 'rss.xml')
self._create_rss_file(xml_page, 'rss.xml')
21 changes: 12 additions & 9 deletions blo/tests/test_blog.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import unittest
import os
import shutil
import sys
import subprocess
from datetime import datetime

import blog
from blo import blog


class SandboxTestCase(unittest.TestCase):
def make_sandbox(self):
self.sandbox = '{0}/test-artifacts/'.format(
self.sandbox = '{0}/{1}/{2}/test-artifacts/'.format(
os.getcwd(),
self.__class__.__name__,
self._testMethodName
Expand Down Expand Up @@ -41,12 +38,18 @@ def tearDown(self):
def test_create_simple_blog(self):
""" Check initially created blog """
blog.create_blog(self.sandbox)
real_list = [i[1:] for i in os.walk(self.sandbox)]
real_list = list()
for i in os.walk(self.sandbox):
entry = i[1:]
entry[0].sort()
entry[1].sort()
real_list.append(entry)

expected_list = [
(['_blog'], []),
(['pages', 'templates'], ['draft_templates.json', 'default.json']),
(['pages', 'templates'], ['default.json', 'draft_templates.json']),
([], []),
([], ['base.html', 'list.html', 'post.html', 'stat.html'])
([], ['base.html', 'list.html', 'page.html', 'post.html', 'stat.html'])
]
self.assertListEqual(real_list, expected_list)

Expand Down Expand Up @@ -88,4 +91,4 @@ def setUp(self):
self.make_sandbox()

def tearDown(self):
self.remove_sandbox()
self.remove_sandbox()
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

setup(
name='blo',
version='0.6',
version='0.8.1',
license='BSD-3-clause',
author='Yann Savuir',
author_email='savuir@gmail.com',
Expand All @@ -13,7 +13,7 @@
'blo = blo.blog:main',
],
},
install_requires=['jinja2', 'markdown', 'PyRSS2Gen'],
install_requires=['jinja2', 'markdown', 'PyRSS2Gen', 'Pygments'],
package_data={'': ['blo/default.json', 'blo/draft_templates.json',]},
include_package_data=True,
url='https://github.com/savuir/blo', # use the URL to the github repo
Expand Down