1
2
3 import web
4 import gettext
5 import db
6 import config
7 import datetime
8 from pluginmanager.pluginmanager import PluginManager
9 from log import Log
10
11 urls = (
12 '/navigator', 'navigator.navigator.Navigator',
13 '/navigator/(.*)', 'navigator.navigator.Navigator',
14 '/plugin/(.*)', 'pluginmanager.pluginview.PluginView',
15 '/pluginmanager', 'pluginmanager.listview.ListView',
16 '/pluginmanager/enable/(\w+)', 'pluginmanager.enableview.EnableView',
17 '/pluginmanager/disable/(\w+)', 'pluginmanager.disableview.DisableView',
18 '/pluginmanager/uninstall/(\w+)', 'pluginmanager.uninstallview.UninstallView',
19 '/panel', 'panel.panel.Panel',
20 '/user/register', 'user.createuserview.CreateUserView',
21 '/user/login', 'user.login.LoginView',
22 '/user/logout', 'user.login.LogoutView',
23 '/user/confirmemail/(\w+)/(.*)', 'user.login.ConfirmEmailView',
24 '/user/recoverpassword', 'user.login.RecoverPasswordView',
25 '/user/recoverpassword/(\w+)/(.*)', 'user.login.ChangePasswordView',
26 '/user/editdetails', 'user.login.EditDetailsView',
27
28
29 '/options', 'options.options.Options',
30 '/dbadmin$', 'dbadmin.dbadmin.Admin',
31 '/dbadmin/(?P<model>\w+)$', 'dbadmin.dbadmin.View',
32 '/dbadmin/(?P<model>\w+)/add$', 'dbadmin.dbadmin.Add',
33 '/dbadmin/(?P<model>\w+)/edit/(?P<id>.*)$', 'dbadmin.dbadmin.Edit',
34 '/dbadmin/(?P<model>\w+)/del/(?P<id>.*)$', 'dbadmin.dbadmin.Del',
35 '/jobs', 'clientjob.jobview.ClientJobView',
36 '.*', 'navigator.navigator.Navigator',
37 )
38
39
40 pmanager = PluginManager()
41 app = web.application(urls, globals())
42
46
47
48
49 if web.config.get('_session') is None:
50 store = web.session.DiskStore('sessions')
51 session = web.session.Session(app, store)
52 web.config._session = session
53 else:
54 session = web.config._session
55
57 web.ctx.session = session
58 lang = web.input().get('lang', '')
59 if lang:
60 session.lang = lang
61 elif session.get('lang', ''):
62 lang = session.lang
63 else:
64 langs = map(str.strip,
65 web.ctx.environ.get('HTTP_ACCEPT_LANGUAGE',
66 'en').split(','))
67 lang = [i for i in langs if i in config.langs]
68 lang = lang[0] if lang else config.langs[0]
69 if not lang in config.langs:
70 lang = config.langs[0]
71 session.lang = lang
72
73 web.ctx.gettext = get_gettext(lang)
74
75 context = {'static': '/static',
76 'org': 'opengnsys',
77 '_': web.ctx.gettext,
78 'storage': web.storage,
79 'getattr': getattr,
80 'session': session,
81 'get_notifications' : get_notifications}
82 normal_render = web.template.render('templates', globals=context)
83 context['render'] = normal_render
84 render = web.template.render('templates', base='layout',
85 globals=context)
86 web.ctx.render = render
87 web.ctx.normal_render = normal_render
88 web.ctx.notify = add_notification
89 web.ctx.plugin_manager = pmanager
90
91
92
105
108
110 new_notification = web.storage(text=text, type=type_var, date=datetime.datetime.now())
111 notifications = web.ctx.session.get('notifications', [])
112 notifications.append(new_notification)
113 web.ctx.session['notifications'] = notifications
114
115 gettext.install('messages', config.localedir, unicode=True)
116 -def get_gettext(lang='es'):
117 gtx = gettext.translation('messages',
118 config.localedir,
119 languages=[lang])
120 return gtx.gettext
121
122 app.add_processor(load_sqla)
123 app.add_processor(web.loadhook(session_hook))
124
125 if __name__ == '__main__':
126
127 app.run()
128