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*''))
# % (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