Changeset 3636
- Timestamp:
- 05/08/08 06:14:09 (7 months ago)
- Files:
-
- tracforgeplugin/0.11/tracforge/admin/__init__.py (modified) (1 diff)
- tracforgeplugin/0.11/tracforge/admin/membership.py (modified) (1 diff)
- tracforgeplugin/0.11/tracforge/admin/model.py (modified) (1 diff)
- tracforgeplugin/0.11/tracforge/templates/admin_tracforge_membership.html (added)
- tracforgeplugin/0.11/tracforge/templates/admin_tracforge_memebership.cs (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tracforgeplugin/0.11/tracforge/admin/__init__.py
r3477 r3636 1 1 import api 2 2 import admin 3 #import membership3 import membership 4 4 #import perm 5 5 #import perm_admin tracforgeplugin/0.11/tracforge/admin/membership.py
r1208 r3636 1 # Created by Noah Kantrowitz 2 # Copyright (c) 2008 Noah Kantrowitz. All rights reserved. 1 3 from trac.core import * 2 4 from trac.web.chrome import add_stylesheet 5 from trac.admin.web_ui import IAdminPanelProvider 6 from trac.util.compat import sorted 7 from trac.util.translation import _ 3 8 4 from webadmin.web_ui import IAdminPageProvider 5 6 from model import Project, Members 9 from tracforge.admin.model import Project, Members 7 10 8 11 class TracForgeMembershipModule(Component): 9 12 """A module to manage project memberships.""" 10 11 implements(IAdminPageProvider)12 13 13 # IAdminPageProvider methods 14 def get_admin_pages(self, req): 15 if req.perm.has_permission('TRACFORGE_ADMIN'): 16 yield ('tracforge', 'TracForge', 'membership', 'Membership') 17 18 def process_admin_request(self, req, cat, page, path_info): 19 projects = [Project(self.env, n) for n in Project.select(self.env)] 14 implements(IAdminPanelProvider) 15 16 # IAdminPanelProvider methods 17 def get_admin_panels(self, req): 18 if 'TRACFORGE_ADMIN' in req.perm: 19 yield 'tracforge', _('TracForge'), 'membership', _('Membership') 20 21 def render_admin_panel(self, req, cat, page, path_info): 22 data = {} 23 projects = sorted([(n, Project(self.env, n)) 24 for n in Project.select(self.env)]) 25 projects.insert(0, ('*', Project(self.env, '*'))) 26 20 27 21 28 if req.method == 'POST': 22 if 'add' in req.args .keys():29 if 'add' in req.args: 23 30 proj = req.args.get('project') 24 31 user = req.args.get('user') 25 32 role = req.args.get('role') 26 if proj not in [ p.name for p in projects] and proj != '*':27 raise TracError , 'Invalid project %s'%proj33 if proj not in [n for n, p in projects]: 34 raise TracError(_('Invalid project %s'), proj) 28 35 if role not in ('member', 'admin'): 29 raise TracError , 'Invalid role %s'%role36 raise TracError(_('Invalid role %s'), role) 30 37 Members(self.env, proj)[user] = role 31 req.redirect(req.href.admin(cat, page)) 38 req.redirect(req.href.admin(cat, page)) 39 elif 'remove' in req.args: 40 db = self.env.get_db_cnx() 41 for name, proj in projects: 42 users = req.args.getlist('sel'+name) 43 members = Members(self.env, name, db=db) 44 for user in users: 45 del members[user] 46 db.commit() 47 req.redirect(req.href.admin(cat, page)) 48 32 49 33 projects_data = {} 34 for proj in projects: 35 projects_data[proj.name] = { 36 'members': dict(proj.members.iteritems()), 37 'env_path': proj.env_path, # Need some dummy value to ensure that the headings show up 38 } 50 # projects_data = {} 51 # for proj in projects: 52 # projects_data[proj.name] = { 53 # 'members': dict(proj.members.iteritems()), 54 # 'env_path': proj.env_path, # Need some dummy value to ensure that the headings show up 55 # } 56 # 57 data['projects'] = projects 39 58 40 req.hdf['tracforge.projects.*'] = {41 'dummy': 1,42 'members': dict(Members(self.env, '*').iteritems()),43 }44 req.hdf['tracforge.projects'] = projects_data59 # req.hdf['tracforge.projects.*'] = { 60 # 'dummy': 1, 61 # 'members': dict(Members(self.env, '*').iteritems()), 62 # } 63 #req.hdf['tracforge.projects'] = projects_data 45 64 46 65 add_stylesheet(req, 'tracforge/css/admin.css') 47 return 'admin_tracforge_mem ebership.cs', None66 return 'admin_tracforge_membership.html', data 48 67 tracforgeplugin/0.11/tracforge/admin/model.py
r3549 r3636 60 60 cursor = self.db.cursor() 61 61 62 cursor.execute('DELETE FROM tracforge_members WHERE project=%s AND user =%s',(self.name, key))62 cursor.execute('DELETE FROM tracforge_members WHERE project=%s AND username=%s',(self.name, key)) 63 63 64 64 if self.handle_commit:
