Mercurial > kallithea
comparison rhodecode/model/repo_permission.py @ 2031:82a88013a3fd
merge 1.3 into stable
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 26 Feb 2012 17:25:09 +0200 |
parents | 702e29ce1e9b 87f0800abc7b |
children | 63e58ef80ef1 |
comparison
equal
deleted
inserted
replaced
2005:ab0e122b38a7 | 2031:82a88013a3fd |
---|---|
6 repository permission model for RhodeCode | 6 repository permission model for RhodeCode |
7 | 7 |
8 :created_on: Oct 1, 2011 | 8 :created_on: Oct 1, 2011 |
9 :author: nvinot, marcink | 9 :author: nvinot, marcink |
10 :copyright: (C) 2011-2011 Nicolas Vinot <aeris@imirhil.fr> | 10 :copyright: (C) 2011-2011 Nicolas Vinot <aeris@imirhil.fr> |
11 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> | 11 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com> |
12 :license: GPLv3, see COPYING for more details. | 12 :license: GPLv3, see COPYING for more details. |
13 """ | 13 """ |
14 # This program is free software: you can redistribute it and/or modify | 14 # This program is free software: you can redistribute it and/or modify |
15 # it under the terms of the GNU General Public License as published by | 15 # it under the terms of the GNU General Public License as published by |
16 # the Free Software Foundation, either version 3 of the License, or | 16 # the Free Software Foundation, either version 3 of the License, or |
23 # | 23 # |
24 # You should have received a copy of the GNU General Public License | 24 # You should have received a copy of the GNU General Public License |
25 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 25 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
26 | 26 |
27 import logging | 27 import logging |
28 from rhodecode.model.db import BaseModel, RepoToPerm, Permission,\ | 28 from rhodecode.model import BaseModel |
29 UsersGroupRepoToPerm | 29 from rhodecode.model.db import UserRepoToPerm, UsersGroupRepoToPerm, Permission,\ |
30 from rhodecode.model.meta import Session | 30 User, Repository |
31 | 31 |
32 log = logging.getLogger(__name__) | 32 log = logging.getLogger(__name__) |
33 | 33 |
34 | 34 |
35 class RepositoryPermissionModel(BaseModel): | 35 class RepositoryPermissionModel(BaseModel): |
36 | |
37 def __get_user(self, user): | |
38 return self._get_instance(User, user, callback=User.get_by_username) | |
39 | |
40 def __get_repo(self, repository): | |
41 return self._get_instance(Repository, repository, | |
42 callback=Repository.get_by_repo_name) | |
43 | |
44 def __get_perm(self, permission): | |
45 return self._get_instance(Permission, permission, | |
46 callback=Permission.get_by_key) | |
47 | |
36 def get_user_permission(self, repository, user): | 48 def get_user_permission(self, repository, user): |
37 return RepoToPerm.query() \ | 49 repository = self.__get_repo(repository) |
38 .filter(RepoToPerm.user == user) \ | 50 user = self.__get_user(user) |
39 .filter(RepoToPerm.repository == repository) \ | 51 |
52 return UserRepoToPerm.query() \ | |
53 .filter(UserRepoToPerm.user == user) \ | |
54 .filter(UserRepoToPerm.repository == repository) \ | |
40 .scalar() | 55 .scalar() |
41 | 56 |
42 def update_user_permission(self, repository, user, permission): | 57 def update_user_permission(self, repository, user, permission): |
43 permission = Permission.get_by_key(permission) | 58 permission = Permission.get_by_key(permission) |
44 current = self.get_user_permission(repository, user) | 59 current = self.get_user_permission(repository, user) |
45 if current: | 60 if current: |
46 if not current.permission is permission: | 61 if not current.permission is permission: |
47 current.permission = permission | 62 current.permission = permission |
48 else: | 63 else: |
49 p = RepoToPerm() | 64 p = UserRepoToPerm() |
50 p.user = user | 65 p.user = user |
51 p.repository = repository | 66 p.repository = repository |
52 p.permission = permission | 67 p.permission = permission |
53 Session.add(p) | 68 self.sa.add(p) |
54 Session.commit() | |
55 | 69 |
56 def delete_user_permission(self, repository, user): | 70 def delete_user_permission(self, repository, user): |
57 current = self.get_user_permission(repository, user) | 71 current = self.get_user_permission(repository, user) |
58 if current: | 72 if current: |
59 Session.delete(current) | 73 self.sa.delete(current) |
60 Session.commit() | |
61 | 74 |
62 def get_users_group_permission(self, repository, users_group): | 75 def get_users_group_permission(self, repository, users_group): |
63 return UsersGroupRepoToPerm.query() \ | 76 return UsersGroupRepoToPerm.query() \ |
64 .filter(UsersGroupRepoToPerm.users_group == users_group) \ | 77 .filter(UsersGroupRepoToPerm.users_group == users_group) \ |
65 .filter(UsersGroupRepoToPerm.repository == repository) \ | 78 .filter(UsersGroupRepoToPerm.repository == repository) \ |
76 p = UsersGroupRepoToPerm() | 89 p = UsersGroupRepoToPerm() |
77 p.users_group = users_group | 90 p.users_group = users_group |
78 p.repository = repository | 91 p.repository = repository |
79 p.permission = permission | 92 p.permission = permission |
80 self.sa.add(p) | 93 self.sa.add(p) |
81 Session.commit() | |
82 | 94 |
83 def delete_users_group_permission(self, repository, users_group): | 95 def delete_users_group_permission(self, repository, users_group): |
84 current = self.get_users_group_permission(repository, users_group) | 96 current = self.get_users_group_permission(repository, users_group) |
85 if current: | 97 if current: |
86 self.sa.delete(current) | 98 self.sa.delete(current) |
87 Session.commit() | |
88 | 99 |
89 def update_or_delete_user_permission(self, repository, user, permission): | 100 def update_or_delete_user_permission(self, repository, user, permission): |
90 if permission: | 101 if permission: |
91 self.update_user_permission(repository, user, permission) | 102 self.update_user_permission(repository, user, permission) |
92 else: | 103 else: |