comparison rhodecode/controllers/admin/users_groups.py @ 3098:a5f0bc867edc rhodecode-0.0.1.5.0

merge with beta
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 13 Dec 2012 22:54:21 +0100
parents 4150c45b5f7f
children 5f1850e4712a
comparison
equal deleted inserted replaced
2909:52b1c6de19c2 3098:a5f0bc867edc
38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator 38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
39 from rhodecode.lib.base import BaseController, render 39 from rhodecode.lib.base import BaseController, render
40 40
41 from rhodecode.model.users_group import UsersGroupModel 41 from rhodecode.model.users_group import UsersGroupModel
42 42
43 from rhodecode.model.db import User, UsersGroup 43 from rhodecode.model.db import User, UsersGroup, UsersGroupToPerm,\
44 UsersGroupRepoToPerm, UsersGroupRepoGroupToPerm
44 from rhodecode.model.forms import UsersGroupForm 45 from rhodecode.model.forms import UsersGroupForm
45 from rhodecode.model.meta import Session 46 from rhodecode.model.meta import Session
46 from rhodecode.lib.utils import action_logger 47 from rhodecode.lib.utils import action_logger
48 from sqlalchemy.orm import joinedload
47 49
48 log = logging.getLogger(__name__) 50 log = logging.getLogger(__name__)
49 51
50 52
51 class UsersGroupsController(BaseController): 53 class UsersGroupsController(BaseController):
100 def new(self, format='html'): 102 def new(self, format='html'):
101 """GET /users_groups/new: Form to create a new item""" 103 """GET /users_groups/new: Form to create a new item"""
102 # url('new_users_group') 104 # url('new_users_group')
103 return render('admin/users_groups/users_group_add.html') 105 return render('admin/users_groups/users_group_add.html')
104 106
107 def _load_data(self, id):
108 c.users_group.permissions = {
109 'repositories': {},
110 'repositories_groups': {}
111 }
112
113 ugroup_repo_perms = UsersGroupRepoToPerm.query()\
114 .options(joinedload(UsersGroupRepoToPerm.permission))\
115 .options(joinedload(UsersGroupRepoToPerm.repository))\
116 .filter(UsersGroupRepoToPerm.users_group_id == id)\
117 .all()
118
119 for gr in ugroup_repo_perms:
120 c.users_group.permissions['repositories'][gr.repository.repo_name] \
121 = gr.permission.permission_name
122
123 ugroup_group_perms = UsersGroupRepoGroupToPerm.query()\
124 .options(joinedload(UsersGroupRepoGroupToPerm.permission))\
125 .options(joinedload(UsersGroupRepoGroupToPerm.group))\
126 .filter(UsersGroupRepoGroupToPerm.users_group_id == id)\
127 .all()
128
129 for gr in ugroup_group_perms:
130 c.users_group.permissions['repositories_groups'][gr.group.group_name] \
131 = gr.permission.permission_name
132
133 c.group_members_obj = [x.user for x in c.users_group.members]
134 c.group_members = [(x.user_id, x.username) for x in
135 c.group_members_obj]
136 c.available_members = [(x.user_id, x.username) for x in
137 User.query().all()]
138
105 def update(self, id): 139 def update(self, id):
106 """PUT /users_groups/id: Update an existing item""" 140 """PUT /users_groups/id: Update an existing item"""
107 # Forms posted to this method should contain a hidden field: 141 # Forms posted to this method should contain a hidden field:
108 # <input type="hidden" name="_method" value="PUT" /> 142 # <input type="hidden" name="_method" value="PUT" />
109 # Or using helpers: 143 # Or using helpers:
110 # h.form(url('users_group', id=ID), 144 # h.form(url('users_group', id=ID),
111 # method='put') 145 # method='put')
112 # url('users_group', id=ID) 146 # url('users_group', id=ID)
113 147
114 c.users_group = UsersGroup.get(id) 148 c.users_group = UsersGroup.get_or_404(id)
115 c.group_members_obj = [x.user for x in c.users_group.members] 149 self._load_data(id)
116 c.group_members = [(x.user_id, x.username) for x in
117 c.group_members_obj]
118
119 c.available_members = [(x.user_id, x.username) for x in
120 User.query().all()]
121 150
122 available_members = [safe_unicode(x[0]) for x in c.available_members] 151 available_members = [safe_unicode(x[0]) for x in c.available_members]
123 152
124 users_group_form = UsersGroupForm(edit=True, 153 users_group_form = UsersGroupForm(edit=True,
125 old_data=c.users_group.get_dict(), 154 old_data=c.users_group.get_dict(),
187 def edit(self, id, format='html'): 216 def edit(self, id, format='html'):
188 """GET /users_groups/id/edit: Form to edit an existing item""" 217 """GET /users_groups/id/edit: Form to edit an existing item"""
189 # url('edit_users_group', id=ID) 218 # url('edit_users_group', id=ID)
190 219
191 c.users_group = UsersGroup.get_or_404(id) 220 c.users_group = UsersGroup.get_or_404(id)
192 221 self._load_data(id)
193 c.users_group.permissions = {} 222
194 c.group_members_obj = [x.user for x in c.users_group.members]
195 c.group_members = [(x.user_id, x.username) for x in
196 c.group_members_obj]
197 c.available_members = [(x.user_id, x.username) for x in
198 User.query().all()]
199 ug_model = UsersGroupModel() 223 ug_model = UsersGroupModel()
200 defaults = c.users_group.get_dict() 224 defaults = c.users_group.get_dict()
201 defaults.update({ 225 defaults.update({
202 'create_repo_perm': ug_model.has_perm(c.users_group, 226 'create_repo_perm': ug_model.has_perm(c.users_group,
203 'hg.create.repository'), 227 'hg.create.repository'),