def grant_users_group_permission(self, repo, group_name, perm): """ Grant permission for users group on given repository, or update existing one if found :param repo: Instance of Repository, repository_id, or repository name :param group_name: Instance of UserGroup, users_group_id, or users group name :param perm: Instance of Permission, or permission_name """ repo = self.__get_repo(repo) group_name = self.__get_users_group(group_name) permission = self.__get_perm(perm) # check if we have that permission already obj = self.sa.query(UsersGroupRepoToPerm)\ .filter(UsersGroupRepoToPerm.users_group == group_name)\ .filter(UsersGroupRepoToPerm.repository == repo)\ .scalar() if obj is None: # create new obj = UsersGroupRepoToPerm() obj.repository = repo obj.users_group = group_name obj.permission = permission self.sa.add(obj)
def update_users_group_permission(self, repository, users_group, 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)