Change the variable 'theme' to 'template' since tornado always uses it. Avoid confusion.
Set template_path so that you don't have to tell the server where the template files are later.
Do not use static_url, not friendly to template loader.
Extract disqus comment box code and github fork bar code to individual files.
Extract footer to an individual file footer.html.
Add template_parser.TemplateParser designed to parser template files and generate static html. The test file template_parser_test.py is tested.
Extract loadConfig() to individual file from preview.py
Rename config_mgr.py to utils.py, move function initSroucePaht() to utils.py.
Post href format changed to '/post/post_name.html' since it's more convenient to convert website to a static one.
Correct error that build directory is 'project_root/build'.
Add function 'src.common.settings.getSiteInfo()' to get site information like author, site url, github link and so on.
Add function src.common.markdown_parser.getAllParserdPosts() to list all the posts and parse them.
markdown_parser.getAllParsedPosts(brief=False) should check if the content should be truncated.
generate.py is done. It is designed to generate a static website with yours posts.