def org_get_shared_users_by_repo(self, org_id, repo_id):
        users = []
        # get users that the repo is shared to
        shared_users = syncwserv_threaded_rpc.org_get_shared_users_by_repo(org_id, repo_id)
        for user in shared_users:
            users.append(user.user)

        # get users in groups that the repo is shared to
        group_ids = syncwserv_threaded_rpc.get_org_groups_by_repo(org_id, repo_id)
        if not group_ids:
            return users

        ids = []
        for group_id in group_ids.split('\n'):
            if not group_id:
                continue
            ids.append(int(group_id))

        json_ids = json.dumps(ids)
        group_users = ccnet_threaded_rpc.get_groups_members(json_ids)

        for user in group_users:
            if user.user_name not in users:
                users.append(user.user_name)

        return users
 def get_groups_members(self, group_ids):
     """
     @group_ids: json '[id1, id2, id3,...]'
     """
     return ccnet_threaded_rpc.get_groups_members(group_ids)