##// END OF EJS Templates
Update LICENSE.md to include license information about Mousetrap.
Update LICENSE.md to include license information about Mousetrap.

File last commit:

r4116:ffd45b18 rhodecode-2.2.5-gpl
r4127:f8bb2cf6 rhodecode-2.2.5-gpl
Show More
users.py
505 lines | 19.3 KiB | text/x-python | PythonLexer
some docs updates on controller
r853 # -*- coding: utf-8 -*-
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/>.
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 """
rhodecode.controllers.admin.users
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Users crud controller for pylons
:created_on: Apr 4, 2010
:author: marcink
:copyright: (c) 2013 RhodeCode GmbH.
:license: GPLv3, see LICENSE for more details.
"""
some docs updates on controller
r853
import logging
import traceback
import formencode
implemented admin panel Users table with YUI datatable...
r2658 from pylons import response
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 _
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from sqlalchemy.sql.expression import func
some docs updates on controller
r853
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 import rhodecode
PEP8ify - controllers
r1245 from rhodecode.lib.exceptions import DefaultUserException, \
Added pre-create user hook....
r4074 UserOwnsReposException, UserCreationError
renamed project to rhodecode
r547 from rhodecode.lib import helpers as h
implemented admin panel Users table with YUI datatable...
r2658 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 AuthUser, generate_api_key
import rhodecode.lib.auth_modules.auth_rhodecode
from rhodecode.lib import auth_modules
renamed project to rhodecode
r547 from rhodecode.lib.base import BaseController, render
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.model.api_key import ApiKeyModel
some docs updates on controller
r853
Iteration on default permissions...
r3736 from rhodecode.model.db import User, UserEmailMap, UserIpMap, UserToPerm
from rhodecode.model.forms import UserForm, CustomDefaultPermissionsForm
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
Implemented #467 Journal logs comments on changesets...
r2375 from rhodecode.lib.utils import action_logger
implemented admin panel Users table with YUI datatable...
r2658 from rhodecode.lib.compat import json
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 from rhodecode.lib.utils2 import datetime_to_time, str2bool, safe_int
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"""
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673
renamed project to rhodecode
r547 @LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
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
hide listing of default user...
r3799 c.users_list = User.query().order_by(User.username)\
.filter(User.username != User.DEFAULT_USER)\
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 .order_by(func.lower(User.username))\
hide listing of default user...
r3799 .all()
implemented admin panel Users table with YUI datatable...
r2658
users_data = []
total_records = len(c.users_list)
No more raw html inside users controller....
r2663 _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
grav_tmpl = lambda user_email, size: (
template.get_def("user_gravatar")
merged + fixed pull request #62: Implemented metatags and visualisation options....
r2674 .render(user_email, size, _=_, h=h, c=c))
No more raw html inside users controller....
r2663
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 username = lambda user_id, username: (
No more raw html inside users controller....
r2663 template.get_def("user_name")
merged + fixed pull request #62: Implemented metatags and visualisation options....
r2674 .render(user_id, username, _=_, h=h, c=c))
No more raw html inside users controller....
r2663
user_actions = lambda user_id, username: (
template.get_def("user_actions")
merged + fixed pull request #62: Implemented metatags and visualisation options....
r2674 .render(user_id, username, _=_, h=h, c=c))
No more raw html inside users controller....
r2663
implemented admin panel Users table with YUI datatable...
r2658 for user in c.users_list:
fixed sorting by last_login in users admin page
r2699
implemented admin panel Users table with YUI datatable...
r2658 users_data.append({
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 "gravatar": grav_tmpl(user. email, 20),
"raw_name": user.username,
"username": username(user.user_id, user.username),
implemented admin panel Users table with YUI datatable...
r2658 "firstname": user.name,
"lastname": user.lastname,
"last_login": h.fmt_date(user.last_login),
fixed sorting by last_login in users admin page
r2699 "last_login_raw": datetime_to_time(user.last_login),
Mads Kiilerich
helpers: show boolean value of value as icon, not just the True and False singletons
r3627 "active": h.boolicon(user.active),
"admin": h.boolicon(user.admin),
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 "extern_type": user.extern_type,
"extern_name": user.extern_name,
No more raw html inside users controller....
r2663 "action": user_actions(user.user_id, user.username),
implemented admin panel Users table with YUI datatable...
r2658 })
c.data = json.dumps({
"totalRecords": total_records,
"startIndex": 0,
"sort": None,
"dir": "asc",
"records": users_data
})
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')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.default_extern_type = auth_modules.auth_rhodecode.RhodeCodeAuthPlugin.name
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)
Implemented #467 Journal logs comments on changesets...
r2375 usr = form_result['username']
action_logger(self.rhodecode_user, 'admin_created_user:%s' % usr,
None, self.ip_addr, self.sa)
Mads Kiilerich
consistently capitalize initial letter in flash messages
r3565 h.flash(_('Created user %s') % usr,
renamed project to rhodecode
r547 category='success')
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
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")
Added pre-create user hook....
r4074 except UserCreationError, e:
h.flash(e, 'error')
renamed project to rhodecode
r547 except Exception:
log.error(traceback.format_exc())
Mads Kiilerich
consistently capitalize initial letter in flash messages
r3565 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')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.default_extern_type = auth_modules.auth_rhodecode.RhodeCodeAuthPlugin.name
renamed project to rhodecode
r547 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)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.active = 'profile'
renamed project to rhodecode
r547 user_model = UserModel()
Code refactoring,models renames...
r629 c.user = user_model.get(id)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.extern_type = c.user.extern_type
c.extern_name = c.user.extern_name
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
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))
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 skip_attrs = ['extern_type', 'extern_name']
#TODO: plugin should define if username can be updated
if c.extern_type != "rhodecode":
# forbid updating username for external accounts
skip_attrs.append('username')
Implemented #658 Changing username in LDAP-Mode should not be allowed....
r3021 user_model.update(id, form_result, skip_attrs=skip_attrs)
Implemented #467 Journal logs comments on changesets...
r2375 usr = form_result['username']
action_logger(self.rhodecode_user, 'admin_updated_user:%s' % usr,
None, self.ip_addr, self.sa)
Fixed #161 form saves the create repository permission....
r1266 h.flash(_('User updated successfully'), category='success')
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
refactor codes and setup for python 2.5...
r564 except formencode.Invalid, errors:
Added validation into user email map
r2479 defaults = errors.value
Fixed #161 form saves the create repository permission....
r1266 e = errors.error_dict or {}
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 defaults.update({
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 'create_repo_perm': user_model.has_perm(id,
'hg.create.repository'),
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 'fork_repo_perm': user_model.has_perm(id, 'hg.fork.repository'),
'_method': 'put'
})
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/users/user_edit.html'),
Added validation into user email map
r2479 defaults=defaults,
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())
Mads Kiilerich
consistently capitalize initial letter in flash messages
r3565 h.flash(_('Error occurred during update of user %s') \
renamed project to rhodecode
r547 % form_result.get('username'), category='error')
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 return redirect(url('edit_user', id=id))
#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)
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 usr = User.get_or_404(id)
renamed project to rhodecode
r547 try:
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 UserModel().delete(usr)
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
Mads Kiilerich
consistently capitalize initial letter in flash messages
r3565 h.flash(_('Successfully deleted user'), category='success')
fixed #72 show warning on removal when user still is owner of existing repositories...
r713 except (UserOwnsReposException, DefaultUserException), e:
Don't cast to string on warning about deleting an user who still owns repositories
r2155 h.flash(e, category='warning')
renamed project to rhodecode
r547 except Exception:
Don't cast to string on warning about deleting an user who still owns repositories
r2155 log.error(traceback.format_exc())
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)
throw 404s on empty show functions in ADMIN controllers
r3731 User.get_or_404(-1)
#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)
use get_or_404 where possible
r2496 c.user = User.get_or_404(id)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
use get_or_404 where possible
r2496
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.active = 'profile'
c.extern_type = c.user.extern_type
c.extern_name = c.user.extern_name
c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
defaults = c.user.get_dict()
return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False)
def edit_advanced(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
#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'))
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 c.active = 'advanced'
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116
Iteration on default permissions...
r3736 umodel = UserModel()
new improved models with helper functions for easier data fetching
r832 defaults = c.user.get_dict()
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 defaults.update({
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 'create_repo_perm': umodel.has_perm(c.user, 'hg.create.repository'),
'create_user_group_perm': umodel.has_perm(c.user,
'hg.usergroup.create.true'),
'fork_repo_perm': umodel.has_perm(c.user, 'hg.fork.repository'),
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 })
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False)
Added some more details into user edit permissions view
r895
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 def edit_api_keys(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
c.active = 'api_keys'
show_expired = True
c.lifetime_values = [
(str(-1), _('forever')),
(str(5), _('5 minutes')),
(str(60), _('1 hour')),
(str(60 * 24), _('1 day')),
(str(60 * 24 * 30), _('1 month')),
]
c.lifetime_options = [(c.lifetime_values, _("Lifetime"))]
c.user_api_keys = ApiKeyModel().get_api_keys(c.user.user_id,
show_expired=show_expired)
defaults = c.user.get_dict()
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 force_defaults=False)
def add_api_key(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
lifetime = safe_int(request.POST.get('lifetime'), -1)
description = request.POST.get('description')
new_api_key = ApiKeyModel().create(c.user.user_id, description, lifetime)
Session().commit()
h.flash(_("Api key successfully created"), category='success')
return redirect(url('edit_user_api_keys', id=c.user.user_id))
def delete_api_key(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
Fixed #161 form saves the create repository permission....
r1266
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 api_key = request.POST.get('del_api_key')
if request.POST.get('del_api_key_builtin'):
user = User.get(c.user.user_id)
if user:
user.api_key = generate_api_key(user.username)
Session().add(user)
Session().commit()
h.flash(_("Api key successfully reset"), category='success')
elif api_key:
ApiKeyModel().delete(api_key, c.user.user_id)
Session().commit()
h.flash(_("Api key successfully deleted"), category='success')
return redirect(url('edit_user_api_keys', id=c.user.user_id))
def update_account(self, id):
pass
def edit_perms(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
c.active = 'perms'
c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
umodel = UserModel()
defaults = c.user.get_dict()
defaults.update({
'create_repo_perm': umodel.has_perm(c.user, 'hg.create.repository'),
'create_user_group_perm': umodel.has_perm(c.user,
'hg.usergroup.create.true'),
'fork_repo_perm': umodel.has_perm(c.user, 'hg.fork.repository'),
})
return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False)
def update_perms(self, id):
Fixed #161 form saves the create repository permission....
r1266 """PUT /users_perm/id: Update an existing item"""
# url('user_perm', id=ID, method='put')
Iteration on default permissions...
r3736 user = User.get_or_404(id)
auto white-space removal
r1818
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 try:
Iteration on default permissions...
r3736 form = CustomDefaultPermissionsForm()()
form_result = form.to_python(request.POST)
inherit_perms = form_result['inherit_default_permissions']
user.inherit_default_permissions = inherit_perms
Session().add(user)
user_model = UserModel()
Fixed #161 form saves the create repository permission....
r1266
Iteration on default permissions...
r3736 defs = UserToPerm.query()\
.filter(UserToPerm.user == user)\
.all()
for ug in defs:
Session().delete(ug)
if form_result['create_repo_perm']:
user_model.grant_perm(id, 'hg.create.repository')
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 else:
Iteration on default permissions...
r3736 user_model.grant_perm(id, 'hg.create.none')
if form_result['create_user_group_perm']:
user_model.grant_perm(id, 'hg.usergroup.create.true')
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 else:
Iteration on default permissions...
r3736 user_model.grant_perm(id, 'hg.usergroup.create.false')
if form_result['fork_repo_perm']:
user_model.grant_perm(id, 'hg.fork.repository')
else:
user_model.grant_perm(id, 'hg.fork.none')
h.flash(_("Updated permissions"), category='success')
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 except Exception:
log.error(traceback.format_exc())
h.flash(_('An error occurred during permissions saving'),
category='error')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return redirect(url('edit_user_perms', id=id))
def edit_emails(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
c.active = 'emails'
c.user_email_map = UserEmailMap.query()\
.filter(UserEmailMap.user == c.user).all()
defaults = c.user.get_dict()
return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False)
Added simple UI for admin to manage emails map
r2330
def add_email(self, id):
Switched forms to new validators
r2467 """POST /user_emails:Add an existing item"""
Added simple UI for admin to manage emails map
r2330 # url('user_emails', id=ID, method='put')
email = request.POST.get('new_email')
user_model = UserModel()
try:
user_model.add_extra_email(id, email)
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
Takumi IINO
i18n improve
r2570 h.flash(_("Added email %s to user") % email, category='success')
Added validation into user email map
r2479 except formencode.Invalid, error:
msg = error.error_dict['email']
h.flash(msg, category='error')
Added simple UI for admin to manage emails map
r2330 except Exception:
log.error(traceback.format_exc())
h.flash(_('An error occurred during email saving'),
category='error')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return redirect(url('edit_user_emails', id=id))
Added simple UI for admin to manage emails map
r2330
def delete_email(self, id):
"""DELETE /user_emails_delete/id: Delete an existing item"""
# url('user_emails_delete', id=ID, method='delete')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 email_id = request.POST.get('del_email_id')
Added simple UI for admin to manage emails map
r2330 user_model = UserModel()
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 user_model.delete_extra_email(id, email_id)
sqlalchemy sessions cleanup in admin...
r2662 Session().commit()
Added simple UI for admin to manage emails map
r2330 h.flash(_("Removed email from user"), category='success')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return redirect(url('edit_user_emails', id=id))
def edit_ips(self, id):
c.user = User.get_or_404(id)
if c.user.username == User.DEFAULT_USER:
h.flash(_("You can't edit this user"), category='warning')
return redirect(url('users'))
c.active = 'ips'
c.user_ip_map = UserIpMap.query()\
.filter(UserIpMap.user == c.user).all()
c.inherit_default_ips = c.user.inherit_default_permissions
c.default_user_ip_map = UserIpMap.query()\
.filter(UserIpMap.user == User.get_default_user()).all()
defaults = c.user.get_dict()
return htmlfill.render(
render('admin/users/user_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False)
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125
def add_ip(self, id):
"""POST /user_ips:Add an existing item"""
# url('user_ips', id=ID, method='put')
ip = request.POST.get('new_ip')
user_model = UserModel()
try:
user_model.add_extra_ip(id, ip)
Session().commit()
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 h.flash(_("Added ip %s to user whitelist") % ip, category='success')
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 except formencode.Invalid, error:
msg = error.error_dict['ip']
h.flash(msg, category='error')
except Exception:
log.error(traceback.format_exc())
h.flash(_('An error occurred during ip saving'),
category='error')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 if 'default_user' in request.POST:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return redirect(url('admin_permissions_ips'))
return redirect(url('edit_user_ips', id=id))
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125
def delete_ip(self, id):
"""DELETE /user_ips_delete/id: Delete an existing item"""
# url('user_ips_delete', id=ID, method='delete')
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 ip_id = request.POST.get('del_ip_id')
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 user_model = UserModel()
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 user_model.delete_extra_ip(id, ip_id)
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 Session().commit()
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 h.flash(_("Removed ip address from user whitelist"), category='success')
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 if 'default_user' in request.POST:
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 return redirect(url('admin_permissions_ips'))
return redirect(url('edit_user_ips', id=id))