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'))