##// END OF EJS Templates
updated changelog
updated changelog

File last commit:

r1512:bf263968 merge default
r1537:c307c920 beta
Show More
permission.py
113 lines | 4.3 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
source code cleanup: remove trailing white space, normalize file endings
r1203 :copyright: (C) 2009-2011 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
#50 on point cache invalidation changes....
r692 from rhodecode.model.db import User, Permission, UserToPerm, RepoToPerm
from rhodecode.model.caching_query import FromCache
Models code cleanups
r759
#50 on point cache invalidation changes....
r692 log = logging.getLogger(__name__)
fixed Example celery config to ampq,...
r752 class PermissionModel(BaseModel):
docs updates
r811 """Permissions model for RhodeCode
"""
#50 on point cache invalidation changes....
r692
def get_permission(self, permission_id, cache=False):
docs updates
r811 """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):
docs updates
r811 """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)\
Fixed permissions for users groups, group can have create repo permission now....
r1271 .filter(User.username ==
form_result['perm_user_name']).scalar()
u2p = self.sa.query(UserToPerm).filter(UserToPerm.user ==
perm_user).all()
#50 on point cache invalidation changes....
r692 if len(u2p) != 3:
raise Exception('Defined: %s should be 3 permissions for default'
' user. This should not happen please verify'
' your database' % len(u2p))
try:
source code cleanup: remove trailing white space, normalize file endings
r1203 #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(
form_result['default_perm'])
self.sa.add(p)
if p.permission.permission_name.startswith('hg.register.'):
p.permission = self.get_permission_by_name(
form_result['default_register'])
self.sa.add(p)
if p.permission.permission_name.startswith('hg.create.'):
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
#50 on point cache invalidation changes....
r692 #stage 2 update all default permissions for repos if checked
bugfix default permissions settings did not read overwrite setting
r751 if form_result['overwrite_default'] == True:
#50 on point cache invalidation changes....
r692 for r2p in self.sa.query(RepoToPerm)\
.filter(RepoToPerm.user == perm_user).all():
r2p.permission = self.get_permission_by_name(
form_result['default_perm'])
self.sa.add(r2p)
#stage 3 set anonymous access
if perm_user.username == 'default':
perm_user.active = bool(form_result['anonymous'])
self.sa.add(perm_user)
self.sa.commit()
Models code cleanups
r759 except (DatabaseError,):
#50 on point cache invalidation changes....
r692 log.error(traceback.format_exc())
self.sa.rollback()
raise