utils.py
54 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
r5608 | # Copyright (C) 2010-2024 RhodeCode GmbH | |||
r1544 | # | |||
# This program is free software: you can redistribute it and/or modify | ||||
# it under the terms of the GNU Affero General Public License, version 3 | ||||
# (only), as published by the Free Software Foundation. | ||||
# | ||||
# 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. | ||||
# | ||||
# You should have received a copy of the GNU Affero General Public License | ||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
# | ||||
# This program is dual-licensed. If you wish to learn more about the | ||||
# RhodeCode Enterprise Edition, including its added features, Support services, | ||||
# and proprietary license terms, please see https://rhodecode.com/licenses/ | ||||
import logging | ||||
log = logging.getLogger(__name__) | ||||
def create_default_permissions(_SESSION, db): | ||||
for p in db.Permission.PERMS: | ||||
if not db.Permission.get_by_key(p[0]): | ||||
new_perm = db.Permission() | ||||
new_perm.permission_name = p[0] | ||||
new_perm.permission_longname = p[0] # translation err with p[1] | ||||
_SESSION().add(new_perm) | ||||
def create_default_object_permission(_SESSION, db): | ||||
obj = db.User.get_by_username(db.User.DEFAULT_USER) | ||||
obj_perms = db.UserToPerm.query().filter(db.UserToPerm.user == obj).all() | ||||
def _get_group(perm_name): | ||||
return '.'.join(perm_name.split('.')[:1]) | ||||
r5042 | defined_perms_groups = list(map( | |||
_get_group, (x.permission.permission_name for x in obj_perms))) | ||||
r1544 | log.debug('GOT ALREADY DEFINED:%s', obj_perms) | |||
# for every default permission that needs to be created, we check if | ||||
# it's group is already defined, if it's not we create default perm | ||||
for perm_name in db.Permission.DEFAULT_USER_PERMISSIONS: | ||||
gr = _get_group(perm_name) | ||||
if gr not in defined_perms_groups: | ||||
log.debug('GR:%s not found, creating permission %s', gr, perm_name) | ||||
new_perm = db.UserToPerm() | ||||
new_perm.user = obj | ||||
new_perm.permission = db.Permission.get_by_key(perm_name) | ||||
_SESSION().add(new_perm) | ||||