Show More
@@ -40,10 +40,12 from rhodecode.lib.base import BaseContr | |||
|
40 | 40 | |
|
41 | 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 | 45 | from rhodecode.model.forms import UsersGroupForm |
|
45 | 46 | from rhodecode.model.meta import Session |
|
46 | 47 | from rhodecode.lib.utils import action_logger |
|
48 | from sqlalchemy.orm import joinedload | |
|
47 | 49 | |
|
48 | 50 | log = logging.getLogger(__name__) |
|
49 | 51 | |
@@ -102,6 +104,38 class UsersGroupsController(BaseControll | |||
|
102 | 104 | # url('new_users_group') |
|
103 | 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 | 139 | def update(self, id): |
|
106 | 140 | """PUT /users_groups/id: Update an existing item""" |
|
107 | 141 | # Forms posted to this method should contain a hidden field: |
@@ -111,13 +145,8 class UsersGroupsController(BaseControll | |||
|
111 | 145 | # method='put') |
|
112 | 146 | # url('users_group', id=ID) |
|
113 | 147 | |
|
114 | c.users_group = UsersGroup.get(id) | |
|
115 | c.group_members_obj = [x.user for x in c.users_group.members] | |
|
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()] | |
|
148 | c.users_group = UsersGroup.get_or_404(id) | |
|
149 | self._load_data(id) | |
|
121 | 150 | |
|
122 | 151 | available_members = [safe_unicode(x[0]) for x in c.available_members] |
|
123 | 152 | |
@@ -189,13 +218,8 class UsersGroupsController(BaseControll | |||
|
189 | 218 | # url('edit_users_group', id=ID) |
|
190 | 219 | |
|
191 | 220 | c.users_group = UsersGroup.get_or_404(id) |
|
221 | self._load_data(id) | |
|
192 | 222 | |
|
193 | c.users_group.permissions = {} | |
|
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 | 223 | ug_model = UsersGroupModel() |
|
200 | 224 | defaults = c.users_group.get_dict() |
|
201 | 225 | defaults.update({ |
@@ -3935,12 +3935,13 div#legend_container table td,div#legend | |||
|
3935 | 3935 | |
|
3936 | 3936 | |
|
3937 | 3937 | .group_members_wrap{ |
|
3938 | ||
|
3938 | min-height: 85px; | |
|
3939 | padding-left: 20px; | |
|
3939 | 3940 | } |
|
3940 | 3941 | |
|
3941 | 3942 | .group_members .group_member{ |
|
3942 | 3943 | height: 30px; |
|
3943 |
padding:0px 0px 0px |
|
|
3944 | padding:0px 0px 0px 0px; | |
|
3944 | 3945 | } |
|
3945 | 3946 | |
|
3946 | 3947 | .reviewers_member{ |
@@ -145,20 +145,83 | |||
|
145 | 145 | <div class="title"> |
|
146 | 146 | <h5>${_('Group members')}</h5> |
|
147 | 147 | </div> |
|
148 | ||
|
148 | 149 | <div class="group_members_wrap"> |
|
150 | % if c.group_members_obj: | |
|
149 | 151 | <ul class="group_members"> |
|
150 | 152 | %for user in c.group_members_obj: |
|
151 | 153 | <li> |
|
152 | 154 | <div class="group_member"> |
|
153 | 155 | <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(user.email,24)}"/> </div> |
|
154 | <div>${user.username}</div> | |
|
156 | <div>${h.link_to(user.username, h.url('edit_user',id=user.user_id))}</div> | |
|
155 | 157 | <div>${user.full_name}</div> |
|
156 | 158 | </div> |
|
157 | 159 | </li> |
|
158 | 160 | %endfor |
|
159 | 161 | </ul> |
|
162 | %else: | |
|
163 | <span class="empty_data">${_('No members yet')}</span> | |
|
164 | %endif | |
|
160 | 165 | </div> |
|
161 | 166 | </div> |
|
167 | ||
|
168 | <div class="box box-left"> | |
|
169 | <!-- box / title --> | |
|
170 | <div class="title"> | |
|
171 | <h5>${_('Permissions defined for this group')}</h5> | |
|
172 | </div> | |
|
173 | ## permissions overview | |
|
174 | <div id="perms" class="table"> | |
|
175 | %for section in sorted(c.users_group.permissions.keys()): | |
|
176 | <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div> | |
|
177 | %if not c.users_group.permissions: | |
|
178 | <span class="empty_data">${_('No permissions set yet')}</span> | |
|
179 | %else: | |
|
180 | <div id='tbl_list_wrap_${section}' class="yui-skin-sam"> | |
|
181 | <table id="tbl_list_repository"> | |
|
182 | <thead> | |
|
183 | <tr> | |
|
184 | <th class="left">${_('Name')}</th> | |
|
185 | <th class="left">${_('Permission')}</th> | |
|
186 | <th class="left">${_('Edit Permission')}</th> | |
|
187 | </thead> | |
|
188 | <tbody> | |
|
189 | %for k in c.users_group.permissions[section]: | |
|
190 | <% | |
|
191 | section_perm = c.users_group.permissions[section].get(k) | |
|
192 | _perm = section_perm.split('.')[-1] | |
|
193 | %> | |
|
194 | <tr> | |
|
195 | <td> | |
|
196 | %if section == 'repositories': | |
|
197 | <a href="${h.url('summary_home',repo_name=k)}">${k}</a> | |
|
198 | %elif section == 'repositories_groups': | |
|
199 | <a href="${h.url('repos_group_home',group_name=k)}">${k}</a> | |
|
200 | %endif | |
|
201 | </td> | |
|
202 | <td> | |
|
203 | <span class="perm_tag ${_perm}">${section_perm}</span> | |
|
204 | </td> | |
|
205 | <td> | |
|
206 | %if section == 'repositories': | |
|
207 | <a href="${h.url('edit_repo',repo_name=k,anchor='permissions_manage')}">${_('edit')}</a> | |
|
208 | %elif section == 'repositories_groups': | |
|
209 | <a href="${h.url('edit_repos_group',id=k,anchor='permissions_manage')}">${_('edit')}</a> | |
|
210 | %else: | |
|
211 | -- | |
|
212 | %endif | |
|
213 | </td> | |
|
214 | </tr> | |
|
215 | %endfor | |
|
216 | </tbody> | |
|
217 | </table> | |
|
218 | </div> | |
|
219 | %endif | |
|
220 | %endfor | |
|
221 | </div> | |
|
222 | </div> | |
|
223 | ||
|
224 | ||
|
162 | 225 | <script type="text/javascript"> |
|
163 | 226 | MultiSelectWidget('users_group_members','available_members','edit_users_group'); |
|
164 | 227 | </script> |
General Comments 0
You need to be logged in to leave comments.
Login now