| #!/usr/bin/env python |
| |
| """ |
| return a dynamic page from website templates |
| |
| all html pages except login-page.html get generated here |
| """ |
| |
| import cgi, cgitb, os, sys |
| cgitb.enable() |
| |
| # import libs |
| sys.path.append('..') |
| import conf |
| sys.path.append('../lib/py') |
| sys.path.append(conf.modules_path) |
| |
| def init(): |
| import webnotes |
| webnotes.form = cgi.FieldStorage(keep_blank_values=True) |
| for key in webnotes.form.keys(): |
| webnotes.form_dict[key] = webnotes.form.getvalue(key) |
| webnotes.connect() |
| |
| def respond(): |
| import webnotes |
| try: |
| if 'page' in webnotes.form_dict: |
| html = get_html(webnotes.form_dict['page']) |
| else: |
| # show home page |
| html = get_html('index') |
| except Exception, e: |
| html = get_html('404') |
| |
| print "Content-Type: text/html" |
| print |
| print html.encode('utf-8') |
| |
| def scrub_page_name(page_name): |
| if page_name.endswith('.html'): |
| page_name = page_name[:-5] |
| return page_name |
| |
| def get_html(page_name): |
| import webnotes |
| import website.web_cache |
| page_name = scrub_page_name(page_name) |
| |
| if page_name == '404': |
| traceback = webnotes.getTraceback() |
| |
| # script is used to display traceback in error console |
| args = { |
| 'comments': """error: %s""" % traceback, |
| 'template': '404.html', |
| } |
| else: |
| args = { |
| 'comments': """page: %s""" % page_name, |
| 'template': 'page.html', |
| } |
| |
| html = website.web_cache.load_from_web_cache(page_name, **args) |
| |
| return html |
| |
| if __name__=="__main__": |
| init() |
| respond() |