]> andersk Git - sql.git/blob - lib/python/mitsql/interface/handler.py
mako SQL interface
[sql.git] / lib / python / mitsql / interface / handler.py
1 import mitsql
2
3 import cherrypy
4 mako = cherrypy.tools.mako
5
6 from pprint import pformat
7
8 #def _500(*argv, **kw):
9 #    s_exc = cherrypy._cperror.format_exc()
10 #    mitsql.logging.error(s_exc)
11 #    return templates.common.shell(title='%s (CherryPy %s)' % (kw.get('status'), kw.get('version')),
12 #                                  content=('<p>%s</p>' + (2*'<div><pre>%s</pre></div>'))
13 #                                  % (kw.get('message'), kw.get('traceback'),
14 #                                     _phtml(dict(filter(lambda x: not x[0][:2] == '__',
15 #                                                        cherrypy.request.__dict__.items())))))
16
17 def _before_request_body():
18     if not cherrypy.request.login is None:
19         if cherrypy.request.login.endswith('@MIT.EDU'):
20             cherrypy.request.login = cherrypy.request.login[:-8]
21         else:
22             cherrypy.request.login = None
23
24 from databases import mysql, pgsql
25
26 class Root(object):
27     _cp_config = {
28         'hooks.before_request_body': _before_request_body,
29         'tools.mako.collection_size': 500,
30         'tools.mako.directories': mitsql._base+'/www/templates',
31     }
32     #class Error(object):
33     #    def _404(*argv, **kw):
34     #        return templates.common._404()
35     #    def _500(*argv, **kw):
36     #        return _500(*argv, **kw)
37     #error = Error()
38     
39     @cherrypy.expose
40     def test(self, *argv, **kw):
41         cherrypy.response.headers['Content-type'] = 'text/plain'
42         return pformat(dict(filter(lambda x: not x[0][:2] == '__', cherrypy.request.__dict__.items())))
43
44     @cherrypy.expose
45     @mako(filename='index')
46     def index(self, *argv, **kw):
47         return {
48             'title': 'SQL Service',
49             'login': cherrypy.request.login,
50         }
51     
52     @cherrypy.expose
53     @mako(filename='passwd')
54     def passwd(self, *argv, **kw):
55         return {
56             'title': 'Change Passwords',
57             'login': cherrypy.request.login,
58         }
59
60     @cherrypy.expose
61     @mako(filename='contact')
62     def contact(self, *argv, **kw):
63         return {
64             'title': 'Contact',
65         }
66
67     @cherrypy.expose
68     @mako(filename='database')
69     def database(self, *argv, **kw):
70         return {
71             'title': 'Databases',
72             'login': cherrypy.request.login,
73             'mysql': mysql.list(cherrypy.request.login),
74             'pgsql': pgsql.list(cherrypy.request.login),
75         }
76
77 #Root._cp_config['error_page.404'] = Root.error._404
78 #Root._cp_config['error_page.500'] = Root.error._500
This page took 0.045656 seconds and 5 git commands to generate.