Rushabh Mehta | bd7f723 | 2012-06-15 14:00:06 +0530 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
| 3 | """ |
| 4 | return a dynamic page from website templates |
Rushabh Mehta | 96bf0b7 | 2012-06-15 17:29:03 +0530 | [diff] [blame] | 5 | |
| 6 | all html pages except login-page.html get generated here |
Rushabh Mehta | bd7f723 | 2012-06-15 14:00:06 +0530 | [diff] [blame] | 7 | """ |
| 8 | |
| 9 | import cgi, cgitb, os, sys |
| 10 | cgitb.enable() |
| 11 | |
| 12 | # import libs |
| 13 | sys.path.append('..') |
| 14 | import conf |
| 15 | sys.path.append('../lib/py') |
| 16 | sys.path.append(conf.modules_path) |
| 17 | |
Anand Doshi | 5d9fc72 | 2012-06-21 11:48:51 +0530 | [diff] [blame] | 18 | def init(): |
| 19 | import webnotes |
| 20 | webnotes.form = cgi.FieldStorage(keep_blank_values=True) |
| 21 | for key in webnotes.form.keys(): |
| 22 | webnotes.form_dict[key] = webnotes.form.getvalue(key) |
| 23 | webnotes.connect() |
| 24 | |
| 25 | def respond(): |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 26 | import webnotes |
| 27 | try: |
| 28 | if 'page' in webnotes.form_dict: |
| 29 | html = get_html(webnotes.form_dict['page']) |
| 30 | else: |
| 31 | # show home page |
| 32 | html = get_html('index') |
| 33 | except Exception, e: |
| 34 | html = get_html('404') |
| 35 | |
Anand Doshi | 5d9fc72 | 2012-06-21 11:48:51 +0530 | [diff] [blame] | 36 | print "Content-Type: text/html" |
| 37 | print |
| 38 | print html.encode('utf-8') |
| 39 | |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 40 | def scrub_page_name(page_name): |
| 41 | if page_name.endswith('.html'): |
| 42 | page_name = page_name[:-5] |
| 43 | return page_name |
| 44 | |
| 45 | def get_html(page_name): |
Anand Doshi | 5d9fc72 | 2012-06-21 11:48:51 +0530 | [diff] [blame] | 46 | import webnotes |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 47 | import website.web_cache |
| 48 | page_name = scrub_page_name(page_name) |
Rushabh Mehta | bd7f723 | 2012-06-15 14:00:06 +0530 | [diff] [blame] | 49 | |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 50 | if page_name == '404': |
Anand Doshi | bba4db1 | 2012-06-27 12:06:45 +0530 | [diff] [blame] | 51 | traceback = webnotes.getTraceback() |
| 52 | |
| 53 | # script is used to display traceback in error console |
| 54 | args = { |
| 55 | 'comments': """error: %s""" % traceback, |
| 56 | 'template': '404.html', |
| 57 | } |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 58 | else: |
Anand Doshi | bba4db1 | 2012-06-27 12:06:45 +0530 | [diff] [blame] | 59 | args = { |
| 60 | 'comments': """page: %s""" % page_name, |
| 61 | 'template': 'page.html', |
| 62 | } |
Rushabh Mehta | bd7f723 | 2012-06-15 14:00:06 +0530 | [diff] [blame] | 63 | |
Anand Doshi | bba4db1 | 2012-06-27 12:06:45 +0530 | [diff] [blame] | 64 | html = website.web_cache.load_from_web_cache(page_name, **args) |
Anand Doshi | 72c945b | 2012-06-22 20:01:07 +0530 | [diff] [blame] | 65 | |
Anand Doshi | 5d9fc72 | 2012-06-21 11:48:51 +0530 | [diff] [blame] | 66 | return html |
| 67 | |
Rushabh Mehta | bd7f723 | 2012-06-15 14:00:06 +0530 | [diff] [blame] | 68 | if __name__=="__main__": |
Anand Doshi | 5d9fc72 | 2012-06-21 11:48:51 +0530 | [diff] [blame] | 69 | init() |
| 70 | respond() |