#!/usr/bin/env python """ return a dynamic page from website templates """ 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 get_outer_env(): """env for outer (cache this)""" import webnotes return { 'top_bar_items': webnotes.conn.sql("""select * from `tabTop Bar Item` where parent='Website Settings' and parentfield='top_bar_items' order by idx asc""", as_dict=1), 'footer_items': webnotes.conn.sql("""select * from `tabTop Bar Item` where parent='Website Settings' and parentfield='footer_items' order by idx asc""", as_dict=1), 'brand': webnotes.conn.get_value('Website Settings', None, 'brand_html'), 'copyright': webnotes.conn.get_value('Website Settings', None, 'copyright'), } def get_html(): import webnotes from jinja2 import Environment, FileSystemLoader from webnotes.model.doc import Document jenv = Environment(loader = FileSystemLoader('../erpnext/website/templates')) webnotes.form = cgi.FieldStorage(keep_blank_values=True) for key in webnotes.form.keys(): webnotes.form_dict[key] = webnotes.form.getvalue(key) webnotes.connect() if 'page' in webnotes.form_dict: try: page = Document('Page', webnotes.form_dict['page']) page.fields.update(get_outer_env()) return jenv.get_template('page.html').render(page.fields) except Exception, e: return jenv.get_template('404.html').render(get_outer_env()) else: return jenv.get_template('404.html').render(get_outer_env()) if __name__=="__main__": print "Content-Type: text/html" print print get_html().encode('utf-8')