Mercurial > kallithea
comparison rhodecode/controllers/admin/permissions.py @ 3179:cd50d1b5f35b
merged with beta
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 21 Jan 2013 00:03:44 +0100 |
parents | a5f0bc867edc 9b92cf5a0cca |
children | 3563bb7b4b82 |
comparison
equal
deleted
inserted
replaced
3113:a0737406ce26 | 3179:cd50d1b5f35b |
---|---|
31 from pylons import request, session, tmpl_context as c, url | 31 from pylons import request, session, tmpl_context as c, url |
32 from pylons.controllers.util import abort, redirect | 32 from pylons.controllers.util import abort, redirect |
33 from pylons.i18n.translation import _ | 33 from pylons.i18n.translation import _ |
34 | 34 |
35 from rhodecode.lib import helpers as h | 35 from rhodecode.lib import helpers as h |
36 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator | 36 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator,\ |
37 AuthUser | |
37 from rhodecode.lib.base import BaseController, render | 38 from rhodecode.lib.base import BaseController, render |
38 from rhodecode.model.forms import DefaultPermissionsForm | 39 from rhodecode.model.forms import DefaultPermissionsForm |
39 from rhodecode.model.permission import PermissionModel | 40 from rhodecode.model.permission import PermissionModel |
40 from rhodecode.model.db import User | 41 from rhodecode.model.db import User, UserIpMap |
41 from rhodecode.model.meta import Session | 42 from rhodecode.model.meta import Session |
42 | 43 |
43 log = logging.getLogger(__name__) | 44 log = logging.getLogger(__name__) |
44 | 45 |
45 | 46 |
103 # <input type="hidden" name="_method" value="PUT" /> | 104 # <input type="hidden" name="_method" value="PUT" /> |
104 # Or using helpers: | 105 # Or using helpers: |
105 # h.form(url('permission', id=ID), | 106 # h.form(url('permission', id=ID), |
106 # method='put') | 107 # method='put') |
107 # url('permission', id=ID) | 108 # url('permission', id=ID) |
109 if id == 'default': | |
110 c.user = default_user = User.get_by_username('default') | |
111 c.perm_user = AuthUser(user_id=default_user.user_id) | |
112 c.user_ip_map = UserIpMap.query()\ | |
113 .filter(UserIpMap.user == default_user).all() | |
114 permission_model = PermissionModel() | |
108 | 115 |
109 permission_model = PermissionModel() | 116 _form = DefaultPermissionsForm( |
117 [x[0] for x in self.repo_perms_choices], | |
118 [x[0] for x in self.group_perms_choices], | |
119 [x[0] for x in self.register_choices], | |
120 [x[0] for x in self.create_choices], | |
121 [x[0] for x in self.fork_choices])() | |
110 | 122 |
111 _form = DefaultPermissionsForm([x[0] for x in self.repo_perms_choices], | 123 try: |
112 [x[0] for x in self.group_perms_choices], | 124 form_result = _form.to_python(dict(request.POST)) |
113 [x[0] for x in self.register_choices], | 125 form_result.update({'perm_user_name': id}) |
114 [x[0] for x in self.create_choices], | 126 permission_model.update(form_result) |
115 [x[0] for x in self.fork_choices])() | 127 Session().commit() |
128 h.flash(_('Default permissions updated successfully'), | |
129 category='success') | |
116 | 130 |
117 try: | 131 except formencode.Invalid, errors: |
118 form_result = _form.to_python(dict(request.POST)) | 132 defaults = errors.value |
119 form_result.update({'perm_user_name': id}) | |
120 permission_model.update(form_result) | |
121 Session().commit() | |
122 h.flash(_('Default permissions updated successfully'), | |
123 category='success') | |
124 | 133 |
125 except formencode.Invalid, errors: | 134 return htmlfill.render( |
126 defaults = errors.value | 135 render('admin/permissions/permissions.html'), |
127 | 136 defaults=defaults, |
128 return htmlfill.render( | 137 errors=errors.error_dict or {}, |
129 render('admin/permissions/permissions.html'), | 138 prefix_error=False, |
130 defaults=defaults, | 139 encoding="UTF-8") |
131 errors=errors.error_dict or {}, | 140 except Exception: |
132 prefix_error=False, | 141 log.error(traceback.format_exc()) |
133 encoding="UTF-8") | 142 h.flash(_('error occurred during update of permissions'), |
134 except Exception: | 143 category='error') |
135 log.error(traceback.format_exc()) | |
136 h.flash(_('error occurred during update of permissions'), | |
137 category='error') | |
138 | 144 |
139 return redirect(url('edit_permission', id=id)) | 145 return redirect(url('edit_permission', id=id)) |
140 | 146 |
141 def delete(self, id): | 147 def delete(self, id): |
142 """DELETE /permissions/id: Delete an existing item""" | 148 """DELETE /permissions/id: Delete an existing item""" |
155 """GET /permissions/id/edit: Form to edit an existing item""" | 161 """GET /permissions/id/edit: Form to edit an existing item""" |
156 #url('edit_permission', id=ID) | 162 #url('edit_permission', id=ID) |
157 | 163 |
158 #this form can only edit default user permissions | 164 #this form can only edit default user permissions |
159 if id == 'default': | 165 if id == 'default': |
160 default_user = User.get_by_username('default') | 166 c.user = default_user = User.get_by_username('default') |
161 defaults = {'_method': 'put', | 167 defaults = {'anonymous': default_user.active} |
162 'anonymous': default_user.active} | 168 c.perm_user = AuthUser(user_id=default_user.user_id) |
163 | 169 c.user_ip_map = UserIpMap.query()\ |
170 .filter(UserIpMap.user == default_user).all() | |
164 for p in default_user.user_perms: | 171 for p in default_user.user_perms: |
165 if p.permission.permission_name.startswith('repository.'): | 172 if p.permission.permission_name.startswith('repository.'): |
166 defaults['default_repo_perm'] = p.permission.permission_name | 173 defaults['default_repo_perm'] = p.permission.permission_name |
167 | 174 |
168 if p.permission.permission_name.startswith('group.'): | 175 if p.permission.permission_name.startswith('group.'): |
179 | 186 |
180 return htmlfill.render( | 187 return htmlfill.render( |
181 render('admin/permissions/permissions.html'), | 188 render('admin/permissions/permissions.html'), |
182 defaults=defaults, | 189 defaults=defaults, |
183 encoding="UTF-8", | 190 encoding="UTF-8", |
184 force_defaults=True, | 191 force_defaults=False |
185 ) | 192 ) |
186 else: | 193 else: |
187 return redirect(url('admin_home')) | 194 return redirect(url('admin_home')) |