Added menu functions to template that generate a menu based on the
[cmless] / bin / cmless.py
#!/usr/bin/python3
# (c) 2017 Aaron Taylor <ataylor at subgeniuskitty dot com>
# See LICENSE file for copyright and license details.
# Python imports
import sys, os, urllib.parse
# CMless imports
import config, misc, template
def main():
print("Content-Type: text/html;charset=utf-8\n")
# Since we can't use Apache's DirectoryIndex directive due to a RewriteCond
# passing all non-file objects to this script, we implement equivalent
# functionality here.
if os.environ['REQUEST_URI'][-1] == "/":
os.environ['REQUEST_URI'] = os.environ['REQUEST_URI'] + config.default_page
# Since we use REQUEST_URI to navigate the filesystem we need to unquote it.
# In other words, replace things like '%20' with ' ' (a space character).
os.environ['REQUEST_URI'] = urllib.parse.unquote(os.environ['REQUEST_URI'])
# The template engine operates like a micropass compiler with each pass
# handling one tag from the template. Extensions to the template engine
# should be executed from here and should not have or create
# inter-dependencies.
content = misc.load_file(config.site_template_prefix + "/" + config.template_file)
content = template.page_title(content)
content = template.site_title(content)
content = template.current_year(content)
content = template.head_meta_description(content)
content = template.head_meta_keywords(content)
content = template.menu_top_level(content)
content = template.menu_current_dir(content)
content = template.body(content)
print(content)
if __name__ == "__main__":
sys.exit(main())