##// END OF EJS Templates
rev_start for compare should use parents only if there are present
rev_start for compare should use parents only if there are present

File last commit:

r3220:9e76876a beta
r3386:934f1fd5 beta
Show More
permission.py
144 lines | 5.6 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
moved caching query to libs
r1669 from rhodecode.lib.caching_query import FromCache
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
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 get_permission(self, permission_id, cache=False):
notification to commit author + gardening
r1716 """
Get's permissions by id
source code cleanup: remove trailing white space, normalize file endings
r1203
docs updates
r811 :param permission_id: id of permission to get from database
:param cache: use Cache for this query
"""
#50 on point cache invalidation changes....
r692 perm = self.sa.query(Permission)
if cache:
perm = perm.options(FromCache("sql_cache_short",
"get_permission_%s" % permission_id))
return perm.get(permission_id)
def get_permission_by_name(self, name, cache=False):
notification to commit author + gardening
r1716 """
Get's permissions by given name
source code cleanup: remove trailing white space, normalize file endings
r1203
docs updates
r811 :param name: name to fetch
:param cache: Use cache for this query
"""
#50 on point cache invalidation changes....
r692 perm = self.sa.query(Permission)\
.filter(Permission.permission_name == name)
if cache:
perm = perm.options(FromCache("sql_cache_short",
"get_permission_%s" % name))
return perm.scalar()
def update(self, form_result):
perm_user = self.sa.query(User)\
another major refactoring with session management
r1734 .filter(User.username ==
form_result['perm_user_name']).scalar()
Fixed permissions for users groups, group can have create repo permission now....
r1271 u2p = self.sa.query(UserToPerm).filter(UserToPerm.user ==
perm_user).all()
auto-healing of permissions for default user after upgrading from some old versions.
r2798 if len(u2p) != len(User.DEFAULT_PERMISSIONS):
implemented #663 Admin/permission: specify default repogroup perms...
r3052 raise Exception('Defined: %s should be %s permissions for default'
#50 on point cache invalidation changes....
r692 ' user. This should not happen please verify'
implemented #663 Admin/permission: specify default repogroup perms...
r3052 ' your database' % (len(u2p), len(User.DEFAULT_PERMISSIONS)))
#50 on point cache invalidation changes....
r692
try:
notification to commit author + gardening
r1716 # stage 1 change defaults
#50 on point cache invalidation changes....
r692 for p in u2p:
if p.permission.permission_name.startswith('repository.'):
p.permission = self.get_permission_by_name(
implemented #663 Admin/permission: specify default repogroup perms...
r3052 form_result['default_repo_perm'])
self.sa.add(p)
elif p.permission.permission_name.startswith('group.'):
p.permission = self.get_permission_by_name(
form_result['default_group_perm'])
#50 on point cache invalidation changes....
r692 self.sa.add(p)
Update permissions from admin permissions menu, also overwrites defaults...
r2425 elif p.permission.permission_name.startswith('hg.register.'):
#50 on point cache invalidation changes....
r692 p.permission = self.get_permission_by_name(
form_result['default_register'])
self.sa.add(p)
Update permissions from admin permissions menu, also overwrites defaults...
r2425 elif p.permission.permission_name.startswith('hg.create.'):
#50 on point cache invalidation changes....
r692 p.permission = self.get_permission_by_name(
form_result['default_create'])
self.sa.add(p)
bugfix default permissions settings did not read overwrite setting
r751
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 elif p.permission.permission_name.startswith('hg.fork.'):
p.permission = self.get_permission_by_name(
form_result['default_fork'])
self.sa.add(p)
#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]
Update permissions from admin permissions menu, also overwrites defaults...
r2425 _def = self.get_permission_by_name('repository.' + _def_name)
# 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
if r2p.repository.private is False:
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
_def = self.get_permission_by_name('group.' + _def_name)
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':
perm_user.active = bool(form_result['anonymous'])
self.sa.add(perm_user)
Models code cleanups
r759 except (DatabaseError,):
#50 on point cache invalidation changes....
r692 log.error(traceback.format_exc())
raise