-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathbasehandler.py
73 lines (55 loc) · 1.4 KB
/
basehandler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
AppEngine-BaseHandler
A little useful RequestHandler on Google App Engine,
and some common functions.
See: http://0-oo.net/sbox/python-box/appengine-basehandler
License: http://0-oo.net/pryn/MIT_license.txt (The MIT license)
'''
__author__ = '[email protected]'
__version__ = '0.1.0'
import xml.sax.saxutils
from google.appengine.ext import webapp
class BaseHandler(webapp.RequestHandler):
def p(self, out, brFlg=False):
'''
write out, with BR tag if you want
'''
self.response.out.write(out)
if brFlg == True:
self.response.out.write('<br />')
self.response.out.write('\n')
def simple_header(self, title, option=''):
'''
Minimum HTML header
'''
self.p('<html>')
self.p('<head>')
self.p('<title>' + h(title) + '</title>')
self.p(option)
self.p('</head>')
self.p('<body>')
def simple_footer(self):
'''
Minimum HTML footer
'''
self.p('</body>')
self.p('</html>')
# Common functions
def h(out):
'''
HTML escape
'''
return xml.sax.saxutils.escape(out, {'"': """})
def sort_dict(dic, by='key', reverse=False):
'''
Note: This function returns tuple
'''
if by == 'key':
i = 0
elif by == 'value':
i = 1
else:
raise Exception('Unexpected "by"')
return sorted(dic.items(), lambda x,y : cmp(x[i], y[i]), reverse=reverse)