def get_group_info(group_id, show_size=False): group = ccnet_api.get_group(group_id) isoformat_timestr = timestamp_to_isoformat_timestr(group.timestamp) group_info = { "id": group.id, "name": group.group_name, "owner": group.creator_name, "owner_name": email2nickname(group.creator_name), "created_at": isoformat_timestr, "quota": seafile_api.get_group_quota(group_id) if is_pro_version() else 0, "parent_group_id": group.parent_group_id if is_pro_version() else 0 } if ccnet_api.is_org_group(group_id): org_id = ccnet_api.get_org_id_by_group(group_id) group_info['org_id'] = org_id if org_id: org = ccnet_api.get_org_by_id(org_id) if org: group_info['org_name'] = org.org_name if show_size: owner = '%s@seafile_group' % group_id workspace = Workspaces.objects.get_workspace_by_owner(owner) if workspace: repo = seafile_api.get_repo(workspace.repo_id) group_info['size'] = repo.size return group_info
def get(self, request): """ List all groups / search group by name Permission checking: 1. Admin user; """ if not request.user.admin_permissions.can_manage_group(): return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.') # search groups by name group_name = request.GET.get('name', '') group_name = group_name.strip() return_results = [] if group_name: # search by name(keyword in name) groups_all = ccnet_api.search_groups(group_name, -1, -1) for group in groups_all: group_info = get_group_info(group.id) return_results.append(group_info) return Response({"name": group_name, "groups": return_results}) try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '100')) except ValueError: current_page = 1 per_page = 100 start = (current_page - 1) * per_page limit = per_page + 1 groups = ccnet_api.get_all_groups(start, limit) if len(groups) > per_page: groups = groups[:per_page] has_next_page = True else: has_next_page = False return_results = [] for group in groups: if hasattr(ccnet_api, 'is_org_group') and \ ccnet_api.is_org_group(group.id): continue group_info = get_group_info(group.id) return_results.append(group_info) page_info = { 'has_next_page': has_next_page, 'current_page': current_page } return Response({"page_info": page_info, "groups": return_results})
def get(self, request): """ List all groups / search group by name Permission checking: 1. Admin user; """ # search groups by name group_name = request.GET.get('name', '') group_name = group_name.strip() return_results = [] if group_name: # search by name(keyword in name) groups_all = ccnet_api.search_groups(group_name, -1, -1) for group in groups_all: group_info = get_group_info(group.id) return_results.append(group_info) return Response({"name": group_name, "groups": return_results}) try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '100')) except ValueError: current_page = 1 per_page = 100 start = (current_page - 1) * per_page limit = per_page + 1 groups = ccnet_api.get_all_groups(start, limit) if len(groups) > per_page: groups = groups[:per_page] has_next_page = True else: has_next_page = False return_results = [] for group in groups: if hasattr(ccnet_api, 'is_org_group') and \ ccnet_api.is_org_group(group.id): continue group_info = get_group_info(group.id) return_results.append(group_info) page_info = { 'has_next_page': has_next_page, 'current_page': current_page } return Response({"page_info": page_info, "groups": return_results})
def get(self, request): """ List all groups Permission checking: 1. Admin user; """ try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '100')) except ValueError: current_page = 1 per_page = 100 start = (current_page - 1) * per_page limit = per_page + 1 groups = ccnet_api.get_all_groups(start, limit) if len(groups) > per_page: groups = groups[:per_page] has_next_page = True else: has_next_page = False return_results = [] for group in groups: if hasattr(ccnet_api, 'is_org_group') and \ ccnet_api.is_org_group(group.id): continue group_info = get_group_info(group.id) return_results.append(group_info) page_info = { 'has_next_page': has_next_page, 'current_page': current_page } return Response({"page_info": page_info, "groups": return_results})