##// END OF EJS Templates
fixed changelog test
fixed changelog test

File last commit:

r1824:89efedac beta
r1942:c59cc823 beta
Show More
users.py
210 lines | 7.8 KiB | text/x-python | PythonLexer
some docs updates on controller
r853 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.admin.users
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Users crud controller for pylons
source code cleanup: remove trailing white space, normalize file endings
r1203
some docs updates on controller
r853 :created_on: Apr 4, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
some docs updates on controller
r853 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
some docs updates on controller
r853
import logging
import traceback
import formencode
renamed project to rhodecode
r547
from formencode import htmlfill
Added some more details into user edit permissions view
r895 from pylons import request, session, tmpl_context as c, url, config
2012 copyrights
r1824 from pylons.controllers.util import redirect
renamed project to rhodecode
r547 from pylons.i18n.translation import _
some docs updates on controller
r853
PEP8ify - controllers
r1245 from rhodecode.lib.exceptions import DefaultUserException, \
UserOwnsReposException
renamed project to rhodecode
r547 from rhodecode.lib import helpers as h
Major rewrite of auth objects. Moved parts of filling user data into user model....
r1117 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
renamed project to rhodecode
r547 from rhodecode.lib.base import BaseController, render
some docs updates on controller
r853
2012 copyrights
r1824 from rhodecode.model.db import User, Permission
renamed project to rhodecode
r547 from rhodecode.model.forms import UserForm
fixed #72 show warning on removal when user still is owner of existing repositories...
r713 from rhodecode.model.user import UserModel
commit less models...
r1749 from rhodecode.model.meta import Session
renamed project to rhodecode
r547
log = logging.getLogger(__name__)
PEP8ify - controllers
r1245
renamed project to rhodecode
r547 class UsersController(BaseController):
"""REST Controller styled on the Atom Publishing Protocol"""
# To properly map this controller, ensure your config/routing.py
# file has a resource setup:
# map.resource('user', 'users')
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 @LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
super(UsersController, self).__before__()
Added some more details into user edit permissions view
r895 c.available_permissions = config['available_permissions']
renamed project to rhodecode
r547
def index(self, format='html'):
"""GET /users: All items in the collection"""
# url('users')
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
c.users_list = self.sa.query(User).all()
renamed project to rhodecode
r547 return render('admin/users/users.html')
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 def create(self):
"""POST /users: Create a new item"""
# url('users')
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 user_model = UserModel()
typo fixes
r1644 user_form = UserForm()()
renamed project to rhodecode
r547 try:
typo fixes
r1644 form_result = user_form.to_python(dict(request.POST))
renamed project to rhodecode
r547 user_model.create(form_result)
h.flash(_('created user %s') % form_result['username'],
category='success')
commit less models...
r1749 Session.commit()
renamed hg_app to rhodecode
r548 #action_logger(self.rhodecode_user, 'new_user', '', '', self.sa)
refactor codes and setup for python 2.5...
r564 except formencode.Invalid, errors:
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/users/user_add.html'),
defaults=errors.value,
errors=errors.error_dict or {},
prefix_error=False,
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 encoding="UTF-8")
renamed project to rhodecode
r547 except Exception:
log.error(traceback.format_exc())
fixed spelling mistakes, and some minor docs bugs
r860 h.flash(_('error occurred during creation of user %s') \
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 % request.POST.get('username'), category='error')
renamed project to rhodecode
r547 return redirect(url('users'))
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 def new(self, format='html'):
"""GET /users/new: Form to create a new item"""
# url('new_user')
return render('admin/users/user_add.html')
def update(self, id):
"""PUT /users/id: Update an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="PUT" />
# Or using helpers:
Fixed #161 form saves the create repository permission....
r1266 # h.form(url('update_user', id=ID),
renamed project to rhodecode
r547 # method='put')
# url('user', id=ID)
user_model = UserModel()
Code refactoring,models renames...
r629 c.user = user_model.get(id)
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
PEP8ify - controllers
r1245 _form = UserForm(edit=True, old_data={'user_id': id,
'email': c.user.email})()
renamed project to rhodecode
r547 form_result = {}
try:
form_result = _form.to_python(dict(request.POST))
user_model.update(id, form_result)
Fixed #161 form saves the create repository permission....
r1266 h.flash(_('User updated successfully'), category='success')
commit less models...
r1749 Session.commit()
refactor codes and setup for python 2.5...
r564 except formencode.Invalid, errors:
Fixed #161 form saves the create repository permission....
r1266 e = errors.error_dict or {}
perm = Permission.get_by_key('hg.create.repository')
commit less models...
r1749 e.update({'create_repo_perm': user_model.has_perm(id, perm)})
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=errors.value,
Fixed #161 form saves the create repository permission....
r1266 errors=e,
renamed project to rhodecode
r547 prefix_error=False,
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 encoding="UTF-8")
renamed project to rhodecode
r547 except Exception:
log.error(traceback.format_exc())
some docs updates on controller
r853 h.flash(_('error occurred during update of user %s') \
renamed project to rhodecode
r547 % form_result.get('username'), category='error')
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 return redirect(url('users'))
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 def delete(self, id):
"""DELETE /users/id: Delete an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="DELETE" />
# Or using helpers:
Fixed #161 form saves the create repository permission....
r1266 # h.form(url('delete_user', id=ID),
renamed project to rhodecode
r547 # method='delete')
# url('user', id=ID)
user_model = UserModel()
try:
user_model.delete(id)
Added some more details into user edit permissions view
r895 h.flash(_('successfully deleted user'), category='success')
commit less models...
r1749 Session.commit()
fixed #72 show warning on removal when user still is owner of existing repositories...
r713 except (UserOwnsReposException, DefaultUserException), e:
renamed project to rhodecode
r547 h.flash(str(e), category='warning')
except Exception:
fixed spelling mistakes, and some minor docs bugs
r860 h.flash(_('An error occurred during deletion of user'),
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 category='error')
renamed project to rhodecode
r547 return redirect(url('users'))
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 def show(self, id, format='html'):
"""GET /users/id: Show a specific item"""
# url('user', id=ID)
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 def edit(self, id, format='html'):
"""GET /users/id/edit: Form to edit an existing item"""
# url('edit_user', id=ID)
commit less models...
r1749 c.user = User.get(id)
renamed project to rhodecode
r547 if not c.user:
return redirect(url('users'))
if c.user.username == 'default':
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 h.flash(_("You can't edit this user"), category='warning')
renamed project to rhodecode
r547 return redirect(url('users'))
Added some more details into user edit permissions view
r895 c.user.permissions = {}
commit less models...
r1749 c.granted_permissions = UserModel().fill_perms(c.user)\
PEP8ify - controllers
r1245 .permissions['global']
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
new improved models with helper functions for easier data fetching
r832 defaults = c.user.get_dict()
Fixed #161 form saves the create repository permission....
r1266 perm = Permission.get_by_key('hg.create.repository')
commit less models...
r1749 defaults.update({'create_repo_perm': UserModel().has_perm(id, perm)})
Added some more details into user edit permissions view
r895
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 )
Fixed #161 form saves the create repository permission....
r1266
def update_perm(self, id):
"""PUT /users_perm/id: Update an existing item"""
# url('user_perm', id=ID, method='put')
grant_perm = request.POST.get('create_repo_perm', False)
commit less models...
r1749 user_model = UserModel()
auto white-space removal
r1818
Fixed #161 form saves the create repository permission....
r1266 if grant_perm:
perm = Permission.get_by_key('hg.create.none')
commit less models...
r1749 user_model.revoke_perm(id, perm)
Fixed #161 form saves the create repository permission....
r1266
perm = Permission.get_by_key('hg.create.repository')
commit less models...
r1749 user_model.grant_perm(id, perm)
Fixed #161 form saves the create repository permission....
r1266 h.flash(_("Granted 'repository create' permission to user"),
category='success')
fixed repo_create permission by adding missing commit statements...
r1758 Session.commit()
Fixed #161 form saves the create repository permission....
r1266 else:
perm = Permission.get_by_key('hg.create.repository')
commit less models...
r1749 user_model.revoke_perm(id, perm)
Fixed #161 form saves the create repository permission....
r1266
perm = Permission.get_by_key('hg.create.none')
commit less models...
r1749 user_model.grant_perm(id, perm)
Fixed #161 form saves the create repository permission....
r1266 h.flash(_("Revoked 'repository create' permission to user"),
category='success')
fixed repo_create permission by adding missing commit statements...
r1758 Session.commit()
Fixed #161 form saves the create repository permission....
r1266 return redirect(url('edit_user', id=id))