import mitsql import cherrypy mako = cherrypy.tools.mako from pprint import pformat #def _500(*argv, **kw): # s_exc = cherrypy._cperror.format_exc() # mitsql.logging.error(s_exc) # return templates.common.shell(title='%s (CherryPy %s)' % (kw.get('status'), kw.get('version')), # content=('

%s

' + (2*'
%s
')) # % (kw.get('message'), kw.get('traceback'), # _phtml(dict(filter(lambda x: not x[0][:2] == '__', # cherrypy.request.__dict__.items()))))) def _before_request_body(): if not cherrypy.request.login is None: if cherrypy.request.login.endswith('@MIT.EDU'): cherrypy.request.login = cherrypy.request.login[:-8] else: cherrypy.request.login = None from databases import mysql, pgsql class Root(object): _cp_config = { 'hooks.before_request_body': _before_request_body, 'tools.mako.collection_size': 500, 'tools.mako.directories': mitsql._base+'/www/templates', } #class Error(object): # def _404(*argv, **kw): # return templates.common._404() # def _500(*argv, **kw): # return _500(*argv, **kw) #error = Error() @cherrypy.expose def test(self, *argv, **kw): cherrypy.response.headers['Content-type'] = 'text/plain' return pformat(dict(filter(lambda x: not x[0][:2] == '__', cherrypy.request.__dict__.items()))) @cherrypy.expose @mako(filename='index') def index(self, *argv, **kw): return { 'title': 'SQL Service', 'login': cherrypy.request.login, } @cherrypy.expose @mako(filename='passwd') def passwd(self, *argv, **kw): return { 'title': 'Change Passwords', 'login': cherrypy.request.login, } @cherrypy.expose @mako(filename='contact') def contact(self, *argv, **kw): return { 'title': 'Contact', } @cherrypy.expose @mako(filename='database') def database(self, *argv, **kw): return { 'title': 'Databases', 'login': cherrypy.request.login, 'mysql': mysql.list(cherrypy.request.login), 'pgsql': pgsql.list(cherrypy.request.login), } #Root._cp_config['error_page.404'] = Root.error._404 #Root._cp_config['error_page.500'] = Root.error._500