##// END OF EJS Templates
make the permission update function idempotent
make the permission update function idempotent

File last commit:

r3730:e42e1d4e beta
r3730:e42e1d4e beta
Show More
permission.py
101 lines | 3.8 KiB | text/x-python | PythonLexer
Models code cleanups
r759 # -*- coding: utf-8 -*-
"""
docs updates
r811 rhodecode.model.permission
~~~~~~~~~~~~~~~~~~~~~~~~~~
#50 on point cache invalidation changes....
r692
Models code cleanups
r759 permissions model for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
Models code cleanups
r759 :created_on: Aug 20, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
Models code cleanups
r759 :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 #
#50 on point cache invalidation changes....
r692 # 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 #
#50 on point cache invalidation changes....
r692 # 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/>.
Models code cleanups
r759
import logging
import traceback
from sqlalchemy.exc import DatabaseError
#50 on point cache invalidation changes....
r692
fixed Example celery config to ampq,...
r752 from rhodecode.model import BaseModel
Update permissions from admin permissions menu, also overwrites defaults...
r2425 from rhodecode.model.db import User, Permission, UserToPerm, UserRepoToPerm,\
UserRepoGroupToPerm
make the permission update function idempotent
r3730 from rhodecode.lib.utils2 import str2bool
moved caching query to libs
r1669
#50 on point cache invalidation changes....
r692 log = logging.getLogger(__name__)
fixed Example celery config to ampq,...
r752 class PermissionModel(BaseModel):
notification to commit author + gardening
r1716 """
Permissions model for RhodeCode
docs updates
r811 """
#50 on point cache invalidation changes....
r692
Added associated classes into child models
r2522 cls = Permission
#50 on point cache invalidation changes....
r692 def update(self, form_result):
make the permission update function idempotent
r3730 perm_user = User.get_by_username(username=form_result['perm_user_name'])
u2p = self.sa.query(UserToPerm).filter(UserToPerm.user == perm_user).all()
#50 on point cache invalidation changes....
r692
try:
make the permission update function idempotent
r3730 def _make_new(usr, perm_name):
new = UserToPerm()
new.user = usr
new.permission = Permission.get_by_key(perm_name)
return new
# clear current entries, to make this function idempotent
# it will fix even if we define more permissions or permissions
# are somehow missing
#50 on point cache invalidation changes....
r692 for p in u2p:
make the permission update function idempotent
r3730 self.sa.delete(p)
#create fresh set of permissions
for def_perm_key in ['default_repo_perm', 'default_group_perm',
'default_register', 'default_create',
'default_fork']:
p = _make_new(perm_user, form_result[def_perm_key])
self.sa.add(p)
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709
#50 on point cache invalidation changes....
r692 #stage 2 update all default permissions for repos if checked
implemented #663 Admin/permission: specify default repogroup perms...
r3052 if form_result['overwrite_default_repo'] == True:
_def_name = form_result['default_repo_perm'].split('repository.')[-1]
make the permission update function idempotent
r3730 _def = Permission.get_by_key('repository.' + _def_name)
Update permissions from admin permissions menu, also overwrites defaults...
r2425 # repos
refactoring of models names for repoGroup permissions
r1633 for r2p in self.sa.query(UserRepoToPerm)\
Update permissions from admin permissions menu, also overwrites defaults...
r2425 .filter(UserRepoToPerm.user == perm_user)\
.all():
Global permission update with "overwrite existing settings" shouldn't override private repositories....
r3220
#don't reset PRIVATE repositories
Mads Kiilerich
follow Python conventions for boolean values...
r3625 if not r2p.repository.private:
Global permission update with "overwrite existing settings" shouldn't override private repositories....
r3220 r2p.permission = _def
self.sa.add(r2p)
implemented #663 Admin/permission: specify default repogroup perms...
r3052
if form_result['overwrite_default_group'] == True:
_def_name = form_result['default_group_perm'].split('group.')[-1]
Update permissions from admin permissions menu, also overwrites defaults...
r2425 # groups
make the permission update function idempotent
r3730 _def = Permission.get_by_key('group.' + _def_name)
Update permissions from admin permissions menu, also overwrites defaults...
r2425 for g2p in self.sa.query(UserRepoGroupToPerm)\
.filter(UserRepoGroupToPerm.user == perm_user)\
.all():
g2p.permission = _def
self.sa.add(g2p)
#50 on point cache invalidation changes....
r692
notification to commit author + gardening
r1716 # stage 3 set anonymous access
#50 on point cache invalidation changes....
r692 if perm_user.username == 'default':
make the permission update function idempotent
r3730 perm_user.active = str2bool(form_result['anonymous'])
#50 on point cache invalidation changes....
r692 self.sa.add(perm_user)
make the permission update function idempotent
r3730 self.sa.commit()
Models code cleanups
r759 except (DatabaseError,):
#50 on point cache invalidation changes....
r692 log.error(traceback.format_exc())
make the permission update function idempotent
r3730 self.sa.rollback()
#50 on point cache invalidation changes....
r692 raise