template based web page loading using web.py
diff --git a/public/web.py b/public/web.py
index 751d762..6f3569e 100755
--- a/public/web.py
+++ b/public/web.py
@@ -23,71 +23,41 @@
webnotes.connect()
def respond():
- html = get_html()
+ 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 get_html():
+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
- from webnotes.model.doc import Document
- # Get web page
- outer_env_dict = get_outer_env()
- try:
- if 'page' in webnotes.form_dict:
- page_name = webnotes.form_dict['page']
- if page_name.endswith('.html'):
- page_name = page_name[:-5]
-
- if page_name.startswith('blog'):
- raise Exception
- #page_name =
- else:
- page_name = get_web_page_name(page_name)
- else:
- from webnotes.cms import get_home_page
- page_name = get_home_page('Guest')
-
- page = Document('Web Page', page_name)
- page.fields.update(outer_env_dict)
-
- return build_html(page.fields, "page: %s" % page_name)
-
- except Exception, e:
- return build_html(outer_env_dict, "error: %s" % webnotes.getTraceback(), '404.html')
-
-def get_outer_env():
- """env dict for outer template"""
- 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),
+ import website.web_cache
+ page_name = scrub_page_name(page_name)
- '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 build_html(args, comments, template='page.html'):
- """build html using jinja2 templates"""
- from webnotes.utils import cstr
- from jinja2 import Environment, FileSystemLoader
- jenv = Environment(loader = FileSystemLoader('../erpnext/website/templates'))
+ if page_name == '404':
+ comments = """error: %s""" % webnotes.getTraceback()
+ template = '404.html'
+ else:
+ comments = """page: %s""" % page_name
+ template = 'page.html'
- html = jenv.get_template(template).render(args)
- html += "\n<!-- %s -->" % cstr(comments)
+ html = website.web_cache.load_from_web_cache(page_name, comments, template)
+
return html
-def get_web_page_name(page_name):
- """get page by shortname"""
- import webnotes
- return webnotes.conn.sql("""select name from `tabWeb Page` where page_name=%s""", page_name)[0][0]
-
-
if __name__=="__main__":
init()
respond()