====== Google App EngineのRequestHandlerを拡張+ちょっと便利な関数群 - AppEngine-BaseHandler ====== Google App Engine(Python版)にも少し慣れてきたので、よく使う関数をリサイクルできるようにしてみる。 selfに実装するものはRequestHandlerを拡張したBaseHandlerに、依存性の無いものはただのfunctionとして作ってみた。\\ Pythonの作法的にはどうなんだろう? ===== ライセンス ===== [[http://0-oo.net/pryn/MIT_license.txt|MITライセンス]]で。 ===== ソースコード ===== #!/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/MIT_license.txt (The MIT license) ''' __author__ = 'dgbadmin@gmail.com' __version__ = '0.2.0' import xml.sax.saxutils import webapp2 class BaseHandler(webapp2.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('
') self.response.out.write('\n') def simple_header(self, title, option=''): ''' Minimum HTML header ''' self.p('') self.p('') self.p('' + h(title) + '') self.p(option) self.p('') self.p('') def simple_footer(self): ''' Minimum HTML footer ''' self.p('') self.p('') # 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)