def delete(self, request, group_id): """ Dismiss a specific group """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) group_owner = group.creator_name group_name = group.group_name try: ccnet_api.remove_group(group_id) seafile_api.remove_group_repos(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Dismiss a specific group """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) group_owner = group.creator_name group_name = group.group_name try: ccnet_api.remove_group(group_id) seafile_api.remove_group_repos(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def group(): group = create_and_get_group('test_group_{}'.format(randstring(10)), USER, gtype=None) try: yield group finally: if ccnet_api.get_group(group.id): ccnet_api.remove_group(group.id)
def test_repo_perm_in_structure(repo, permission): id1 = ccnet_api.create_group('group1', USER, parent_group_id=-1) id2 = ccnet_api.create_group('group2', USER, parent_group_id=id1) assert id1 != -1 and id2 != -1 assert ccnet_api.group_add_member(id2, USER, USER2) != -1 assert api.group_share_repo(repo.id, id1, USER2, permission) != -1 assert api.check_permission(repo.id, USER2) == permission assert api.group_unshare_repo(repo.id, id1, USER2) != -1 assert api.check_permission(repo.id, USER2) == None assert ccnet_api.remove_group(id2) != -1 assert ccnet_api.remove_group(id1) != -1
def delete(self, request, group_id): """ Dismiss a specific group """ try: group_id = int(group_id) ccnet_api.remove_group(group_id) seafile_api.remove_group_repos(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) return Response({'success': True})
def delete(self, request, group_id): """ Dismiss a specific group """ try: group_id = int(group_id) ccnet_api.remove_group(group_id) seafile_api.remove_group_repos(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) return Response({'success': True})
def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) org_id = None if is_org_context(request): # request called by org admin org_id = request.user.org.org_id try: if org_id: has_repo = seafile_api.org_if_group_has_group_owned_repo( org_id, group_id) else: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _('There are libraries in this department.') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) if len(child_groups) > 0: error_msg = _('There are sub-departments in this department.') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) try: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _('There are libraries in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) if len(child_groups) > 0: error_msg = _('There are sub-departments in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) owner = '%s@seafile_group' % group_id workspace = Workspaces.objects.get_workspace_by_owner(owner) if workspace: try: seafile_api.remove_repo(workspace.repo_id) workspace.delete() except Exception as e: logger.error(e) error_msg = _('Internal Server Error') return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Dismiss a specific group """ if not request.user.admin_permissions.can_manage_group(): return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.') group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) group_owner = group.creator_name group_name = group.group_name try: org_id = ccnet_api.get_org_id_by_group(group_id) if org_id >= 0: ccnet_api.remove_org_group(org_id, group_id) else: ccnet_api.remove_group(group_id) seafile_api.remove_group_repos(group_id) ExtraGroupsSharePermission.objects.filter( group_id=group_id).delete() except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) try: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _(u'There are libraries in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) if len(child_groups) > 0: error_msg = _(u'There are sub-departments in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def test_multi_tier_groups(repo): id1 = ccnet_api.create_group('group1', USER, parent_group_id=-1) id2 = ccnet_api.create_group('group2', USER2, parent_group_id = id1) id3 = ccnet_api.create_group('group3', USER, parent_group_id = id1) id4 = ccnet_api.create_group('group4', USER2, parent_group_id = id3) id5 = ccnet_api.create_group('group5', USER2, parent_group_id = 0) assert id1 != -1 and id2 != -1 and id3 != -1 and id4 != -1 group1 = ccnet_api.get_group(id1) group2 = ccnet_api.get_group(id2) group3 = ccnet_api.get_group(id3) group4 = ccnet_api.get_group(id4) assert group1.parent_group_id == -1 assert group2.parent_group_id == id1 assert group3.parent_group_id == id1 assert group4.parent_group_id == id3 members = ccnet_api.search_group_members (id1, 'randgroup{}'.format(randstring(6))) assert len(members) == 0 members = ccnet_api.search_group_members (id1, USER) assert len(members) == 1 assert members[0].user_name == USER ances_order = [id5, id4, id3, id2, id1] user2_groups_with_ancestors = ccnet_api.get_groups (USER2, return_ancestors = True) assert len(user2_groups_with_ancestors) == 5 i = 0 for g in user2_groups_with_ancestors: assert g.id == ances_order[i] i = i + 1 order = [id5, id4, id2] i = 0 user2_groups = ccnet_api.get_groups (USER2) assert len(user2_groups) == 3 for g in user2_groups: assert g.id == order[i] i = i + 1 top_groups = ccnet_api.get_top_groups(True) assert len(top_groups) == 1 for g in top_groups: assert g.parent_group_id == -1 child_order = [id2, id3] i = 0 id1_children = ccnet_api.get_child_groups(id1) assert len(id1_children) == 2 for g in id1_children: assert g.id == child_order[i] i = i + 1 group4_order = [id1, id3, id4] i = 0 group4_ancestors = ccnet_api.get_ancestor_groups(id4) assert len(group4_ancestors) == 3 for g in group4_ancestors: assert g.id == group4_order[i] i = i + 1 rm5 = ccnet_api.remove_group(id5) rm4 = ccnet_api.remove_group(id4) rm3 = ccnet_api.remove_group(id3) rm2 = ccnet_api.remove_group(id2) rm1 = ccnet_api.remove_group(id1) assert rm5 == 0 and rm4 == 0 and rm3 == 0 and rm2 == 0 and rm1 == 0
def test_user_management(repo): email1 = '%s@%s.com' % (randstring(6), randstring(6)) email2 = '%s@%s.com' % (randstring(6), randstring(6)) passwd1 = 'randstring(6)' passwd2 = 'randstring(6)' ccnet_api.add_emailuser(email1, passwd1, 1, 1) ccnet_api.add_emailuser(email2, passwd2, 0, 0) ccnet_email1 = ccnet_api.get_emailuser(email1) ccnet_email2 = ccnet_api.get_emailuser(email2) assert ccnet_email1.is_active == True assert ccnet_email1.is_staff == True assert ccnet_email2.is_active == False assert ccnet_email2.is_staff == False assert ccnet_api.validate_emailuser(email1, passwd1) == 0 assert ccnet_api.validate_emailuser(email2, passwd2) == 0 users = ccnet_api.search_emailusers('DB', email1, -1, -1) assert len(users) == 1 user_ccnet = users[0] assert user_ccnet.email == email1 user_counts = ccnet_api.count_emailusers('DB') user_numbers = ccnet_api.get_emailusers('DB', -1, -1) ccnet_api.update_emailuser('DB', ccnet_email2.id, passwd2, 1, 1) email2_new = ccnet_api.get_emailuser(email2) assert email2_new.is_active == True assert email2_new.is_staff == True #test group when update user id id1 = ccnet_api.create_group('group1', email1, parent_group_id=-1) assert id1 != -1 group1 = ccnet_api.get_group(id1) assert group1.parent_group_id == -1 # test shared repo when update user id api.share_repo(repo.id, USER, email1, "rw") assert api.repo_has_been_shared(repo.id) new_email1 = '%s@%s.com' % (randstring(6), randstring(6)) assert ccnet_api.update_emailuser_id(email1, new_email1) == 0 shared_users = api.list_repo_shared_to(USER, repo.id) assert len(shared_users) == 1 assert shared_users[0].repo_id == repo.id assert shared_users[0].user == new_email1 assert shared_users[0].perm == "rw" api.remove_share(repo.id, USER, new_email1) email1_groups = ccnet_api.get_groups(new_email1) assert len(email1_groups) == 1 assert email1_groups[0].id == id1 rm1 = ccnet_api.remove_group(id1) assert rm1 == 0 ccnet_api.remove_emailuser('DB', new_email1) ccnet_api.remove_emailuser('DB', email2)