示例#1
0
 def list_group_shared_items(self, request, repo_id, path):
     username = request.user.username
     if is_org_context(request):
         org_id = request.user.org.org_id
         if path == '/':
             share_items = seafile_api.list_org_repo_shared_group(
                 org_id, username, repo_id)
         else:
             share_items = seafile_api.get_org_shared_groups_for_subdir(
                 org_id, repo_id, path, username)
     else:
         if path == '/':
             share_items = seafile_api.list_repo_shared_group_by_user(
                 username, repo_id)
         else:
             share_items = seafile_api.get_shared_groups_for_subdir(
                 repo_id, path, username)
     ret = []
     for item in share_items:
         ret.append({
             "share_type": "group",
             "group_info": {
                 "id": item.group_id,
                 "name": seaserv.get_group(item.group_id).group_name,
             },
             "permission": item.perm,
         })
     return ret
示例#2
0
 def list_group_shared_items(self, request, repo_id, path):
     username = request.user.username
     if is_org_context(request):
         org_id = request.user.org.org_id
         if path == '/':
             share_items = seafile_api.list_org_repo_shared_group(org_id,
                     username, repo_id)
         else:
             share_items = seafile_api.get_org_shared_groups_for_subdir(org_id,
                     repo_id, path, username)
     else:
         if path == '/':
             share_items = seafile_api.list_repo_shared_group_by_user(username, repo_id)
         else:
             share_items = seafile_api.get_shared_groups_for_subdir(repo_id,
                                                                    path, username)
     ret = []
     for item in share_items:
         ret.append({
             "share_type": "group",
             "group_info": {
                 "id": item.group_id,
                 "name": seaserv.get_group(item.group_id).group_name,
             },
             "permission": item.perm,
         })
     return ret
示例#3
0
 def list_group_shared_items(self, request, repo_id, path):
     if is_org_context(request):
         # when calling seafile API to share authority related functions, change the uesrname to repo owner.
         repo_owner = seafile_api.get_org_repo_owner(repo_id)
         org_id = request.user.org.org_id
         if path == '/':
             share_items = seafile_api.list_org_repo_shared_group(org_id,
                     repo_owner, repo_id)
         else:
             share_items = seafile_api.get_org_shared_groups_for_subdir(org_id,
                     repo_id, path, repo_owner)
     else:
         repo_owner = seafile_api.get_repo_owner(repo_id)
         if path == '/':
             share_items = seafile_api.list_repo_shared_group_by_user(repo_owner, repo_id)
         else:
             share_items = seafile_api.get_shared_groups_for_subdir(repo_id,
                                                                    path, repo_owner)
     ret = []
     # change is_admin to True if user in admin groups.
     admin_groups = ExtraGroupsSharePermission.objects.get_admin_groups_by_repo(repo_id)
     for item in share_items:
         ret.append({
             "share_type": "group",
             "group_info": {
                 "id": item.group_id,
                 "name": seaserv.get_group(item.group_id).group_name,
             },
             "permission": item.perm,
             "is_admin": item.group_id in admin_groups,
         })
     return ret
示例#4
0
    def list_group_shared_items(self, request, repo_id, path):
        if is_org_context(request):
            # when calling seafile API to share authority related functions, change the uesrname to repo owner.
            repo_owner = seafile_api.get_org_repo_owner(repo_id)
            org_id = request.user.org.org_id
            if path == '/':
                share_items = seafile_api.list_org_repo_shared_group(
                    org_id, repo_owner, repo_id)
            else:
                share_items = seafile_api.get_org_shared_groups_for_subdir(
                    org_id, repo_id, path, repo_owner)
        else:
            repo_owner = seafile_api.get_repo_owner(repo_id)
            if path == '/':
                share_items = seafile_api.list_repo_shared_group_by_user(
                    repo_owner, repo_id)
            else:
                share_items = seafile_api.get_shared_groups_for_subdir(
                    repo_id, path, repo_owner)
        ret = []
        # change is_admin to True if user in admin groups.
        admin_groups = ExtraGroupsSharePermission.objects.get_admin_groups_by_repo(
            repo_id)
        for item in share_items:

            if '@seafile_group' in repo_owner and \
                    repo_owner.split('@')[0] == str(item.group_id):
                continue

            group_id = item.group_id
            group = ccnet_api.get_group(group_id)
            if not group:
                if is_org_context(request):
                    if path == '/':
                        seafile_api.del_org_group_repo(repo_id, org_id,
                                                       group_id)
                    else:
                        seafile_api.org_unshare_subdir_for_group(
                            org_id, repo_id, path, repo_owner, group_id)
                else:
                    if path == '/':
                        seafile_api.unset_group_repo(repo_id, group_id,
                                                     repo_owner)
                    else:
                        seafile_api.unshare_subdir_for_group(
                            repo_id, path, repo_owner, group_id)
                continue

            ret.append({
                "share_type": "group",
                "group_info": {
                    "id": group_id,
                    "name": group.group_name,
                },
                "permission": item.perm,
                "is_admin": group_id in admin_groups,
            })
        return ret
示例#5
0
文件: rpc.py 项目: haiwen/seahub
 def get_shared_groups_by_repo_path(self, repo_id, repo_owner, path='/',
                                    org_id=None):
     if is_valid_org_id(org_id):
         if path == '/':
             return seafile_api.list_org_repo_shared_group(
                 org_id, repo_owner, repo_id)
         else:
             return seafile_api.get_org_shared_groups_for_subdir(
                 org_id, repo_id, path, repo_owner)
     else:
         if path == '/':
             return seafile_api.list_repo_shared_group_by_user(
                 repo_owner, repo_id)
         else:
             return seafile_api.get_shared_groups_for_subdir(
                 repo_id, path, repo_owner)
示例#6
0
def has_shared_to_group(repo_id, path, gid, org_id=None):
    if org_id:
        # when calling seafile API to share authority related functions, change the uesrname to repo owner.
        repo_owner = seafile_api.get_org_repo_owner(repo_id)
        if path == '/':
            share_items = seafile_api.list_org_repo_shared_group(org_id,
                    repo_owner, repo_id)
        else:
            share_items = seafile_api.get_org_shared_groups_for_subdir(org_id,
                    repo_id, path, repo_owner)
    else:
        repo_owner = seafile_api.get_repo_owner(repo_id)
        if path == '/':
            share_items = seafile_api.list_repo_shared_group_by_user(repo_owner, repo_id)
        else:
            share_items = seafile_api.get_shared_groups_for_subdir(repo_id,
                                                                   path, repo_owner)

    return gid in [item.group_id for item in share_items]
示例#7
0
文件: rpc.py 项目: flazx/dtable-web
 def get_shared_groups_by_repo_path(self,
                                    repo_id,
                                    repo_owner,
                                    path='/',
                                    org_id=None):
     if is_valid_org_id(org_id):
         if path == '/':
             return seafile_api.list_org_repo_shared_group(
                 org_id, repo_owner, repo_id)
         else:
             return seafile_api.get_org_shared_groups_for_subdir(
                 org_id, repo_id, path, repo_owner)
     else:
         if path == '/':
             return seafile_api.list_repo_shared_group_by_user(
                 repo_owner, repo_id)
         else:
             return seafile_api.get_shared_groups_for_subdir(
                 repo_id, path, repo_owner)
示例#8
0
文件: utils.py 项目: haiwen/seahub
def has_shared_to_group(repo_id, path, gid, org_id=None):
    if is_valid_org_id(org_id):
        # when calling seafile API to share authority related functions, change the uesrname to repo owner.
        repo_owner = seafile_api.get_org_repo_owner(repo_id)
        if path == '/':
            share_items = seafile_api.list_org_repo_shared_group(org_id,
                    repo_owner, repo_id)
        else:
            share_items = seafile_api.get_org_shared_groups_for_subdir(org_id,
                    repo_id, path, repo_owner)
    else:
        repo_owner = seafile_api.get_repo_owner(repo_id)
        if path == '/':
            share_items = seafile_api.list_repo_shared_group_by_user(repo_owner, repo_id)
        else:
            share_items = seafile_api.get_shared_groups_for_subdir(repo_id,
                                                                   path, repo_owner)

    return gid in [item.group_id for item in share_items]