Mercurial > kallithea
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'), |