##// END OF EJS Templates
Clarify copyright and license of Migrate
Clarify copyright and license of Migrate

File last commit:

r4116:ffd45b18 rhodecode-2.2.5-gpl
r4136:c558221c rhodecode-2.2.5-gpl
Show More
repo_permission.py
100 lines | 3.6 KiB | text/x-python | PythonLexer
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586 # -*- coding: utf-8 -*-
# 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/>.
Bradley M. Kuhn
Imported some of the GPLv3'd changes from RhodeCode v2.2.5....
r4116 """
rhodecode.model.users_group
~~~~~~~~~~~~~~~~~~~~~~~~~~~
repository permission model for RhodeCode
:created_on: Oct 1, 2011
:author: nvinot, marcink
"""
Nicolas VINOT
Add API for repositories and groups (creation, permission)
r1586
import logging
notification to commit author + gardening
r1716 from rhodecode.model import BaseModel
Mads Kiilerich
further cleanup of UsersGroup...
r3417 from rhodecode.model.db import UserRepoToPerm, UserGroupRepoToPerm, \
Share common getter functions in base model, and remove duplicated functions from other models
r2432 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):
Mads Kiilerich
further cleanup of UsersGroup...
r3417 return UserGroupRepoToPerm.query() \
.filter(UserGroupRepoToPerm.users_group == users_group) \
.filter(UserGroupRepoToPerm.repository == repository) \
implements #329...
r1793 .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:
Mads Kiilerich
further cleanup of UsersGroup...
r3417 p = UserGroupRepoToPerm()
implements #329...
r1793 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)