##// END OF EJS Templates
fix default permissions migrations that can cause troubles for some old users
fix default permissions migrations that can cause troubles for some old users

File last commit:

r2776:63e58ef8 merge default
r2795:456a5190 beta
Show More
repo_permission.py
103 lines | 3.8 KiB | text/x-python | PythonLexer
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 # -*- coding: utf-8 -*-
"""
rhodecode.model.users_group
~~~~~~~~~~~~~~~~~~~~~~~~~~~
repository permission model for RhodeCode
:created_on: Oct 1, 2011
implements #329...
r1793 :author: nvinot, marcink
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 :copyright: (C) 2011-2011 Nicolas Vinot <aeris@imirhil.fr>
2012 copyrights
r1824 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com>
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 :license: GPLv3, see COPYING for more details.
"""
# 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.
#
# 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 General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import logging
notification to commit author + gardening
r1716 from rhodecode.model import BaseModel
Share common getter functions in base model, and remove duplicated functions from other models
r2432 from rhodecode.model.db import UserRepoToPerm, UsersGroupRepoToPerm, \
Permission
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586
Nicolas VINOT
Correct code style
r1593 log = logging.getLogger(__name__)
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586
notification to commit author + gardening
r1716
Nicolas VINOT
Correct code style
r1593 class RepositoryPermissionModel(BaseModel):
notification to commit author + gardening
r1716
Added associated classes into child models
r2522 cls = UserRepoToPerm
Nicolas VINOT
Correct code style
r1593 def get_user_permission(self, repository, user):
Share common getter functions in base model, and remove duplicated functions from other models
r2432 repository = self._get_repo(repository)
user = self._get_user(user)
#227 Initial version of repository groups permissions system...
r1982
refactoring of models names for repoGroup permissions
r1633 return UserRepoToPerm.query() \
.filter(UserRepoToPerm.user == user) \
.filter(UserRepoToPerm.repository == repository) \
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 .scalar()
Nicolas VINOT
Correct code style
r1593 def update_user_permission(self, repository, user, permission):
permission = Permission.get_by_key(permission)
current = self.get_user_permission(repository, user)
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 if current:
if not current.permission is permission:
current.permission = permission
else:
refactoring of models names for repoGroup permissions
r1633 p = UserRepoToPerm()
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 p.user = user
p.repository = repository
p.permission = permission
notification to commit author + gardening
r1716 self.sa.add(p)
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586
Nicolas VINOT
Correct code style
r1593 def delete_user_permission(self, repository, user):
current = self.get_user_permission(repository, user)
Nicolas VINOT
[API] Create groups needed when creating repo
r1589 if current:
notification to commit author + gardening
r1716 self.sa.delete(current)
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586
implements #329...
r1793 def get_users_group_permission(self, repository, users_group):
return UsersGroupRepoToPerm.query() \
.filter(UsersGroupRepoToPerm.users_group == users_group) \
.filter(UsersGroupRepoToPerm.repository == repository) \
.scalar()
auto white-space removal
r1818 def update_users_group_permission(self, repository, users_group,
implements #329...
r1793 permission):
permission = Permission.get_by_key(permission)
current = self.get_users_group_permission(repository, users_group)
if current:
if not current.permission is permission:
current.permission = permission
else:
p = UsersGroupRepoToPerm()
p.users_group = users_group
p.repository = repository
p.permission = permission
self.sa.add(p)
def delete_users_group_permission(self, repository, users_group):
current = self.get_users_group_permission(repository, users_group)
if current:
self.sa.delete(current)
Nicolas VINOT
Correct code style
r1593 def update_or_delete_user_permission(self, repository, user, permission):
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 if permission:
Nicolas VINOT
Correct code style
r1593 self.update_user_permission(repository, user, permission)
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 else:
Nicolas VINOT
Correct code style
r1593 self.delete_user_permission(repository, user)
implements #329...
r1793
def update_or_delete_users_group_permission(self, repository, user_group,
permission):
if permission:
self.update_users_group_permission(repository, user_group,
permission)
else:
auto white-space removal
r1818 self.delete_users_group_permission(repository, user_group)