| | 1 | from trac.core import * |
| | 2 | from webadmin.web_ui import IAdminPageProvider |
| | 3 | |
| | 4 | __all__ = [] |
| | 5 | |
| | 6 | |
| | 7 | class ProjectAdminPage(Component): |
| | 8 | |
| | 9 | implements(IAdminPageProvider) |
| | 10 | |
| | 11 | # IAdminPageProvider methods |
| | 12 | |
| | 13 | def get_admin_pages(self, req): |
| | 14 | if req.perm.has_permission('TRAC_ADMIN'): |
| | 15 | yield ('general', 'General', 'sessions', 'User Sessions') |
| | 16 | |
| | 17 | def process_admin_request(self, req, cat, page, path_info): |
| | 18 | req.perm.assert_permission('TRAC_ADMIN') |
| | 19 | |
| | 20 | if req.method == "POST": |
| | 21 | sel = req.args.get('sel') |
| | 22 | sel = isinstance(sel, list) and sel or [sel] |
| | 23 | if not sel: |
| | 24 | raise TracError, 'No session selected' |
| | 25 | db = self.env.get_db_cnx() |
| | 26 | cursor = db.cursor() |
| | 27 | for subject in sel: |
| | 28 | cursor.execute("DELETE FROM session WHERE sid=%s", (subject,)) |
| | 29 | db.commit() |
| | 30 | req.redirect(self.env.href.admin(cat, page)) |
| | 31 | |
| | 32 | sessions = list(self.env.get_known_users()) |
| | 33 | sessions.sort(lambda a, b: cmp(a[0], b[0])) |
| | 34 | req.hdf['admin.sessions'] = [{'subject': s[0], |
| | 35 | 'name': s[1], |
| | 36 | 'email': s[2] |
| | 37 | } for s in sessions] |
| | 38 | return 'admin_sessions.cs', None |
| | 39 | No newline at end of file |