コード例 #1
0
    def restore_user(self, RoleListWidget, UserListWidget, url, id, key):
        logger.info("Restoring User(s)")
        if UserListWidget.updated == True:

            filter = "JSON (*.json)"
            filelist, status = QtWidgets.QFileDialog.getOpenFileNames(
                self, "Open file(s)...", os.getcwd(), filter)
            if len(filelist) > 0:
                sumo = SumoLogic(id, key, endpoint=url)
                for file in filelist:
                    try:
                        with open(file) as filepointer:
                            user = json.load(filepointer)
                    except Exception as e:
                        logger.exception(e)
                        self.mainwindow.errorbox(
                            "Something went wrong reading the file. Do you have the right file permissions? Does it contain valid JSON?"
                        )
                        return
                    try:
                        dest_roles = sumo.get_roles_sync()
                        for source_role in user['roles']:
                            role_already_exists_in_dest = False
                            source_role_id = source_role['id']
                            for dest_role in dest_roles:
                                if dest_role['name'] == source_role['name']:
                                    role_already_exists_in_dest = True
                                    dest_role_id = dest_role['id']
                            if role_already_exists_in_dest:
                                # print('found role at target: ' + source_role['name'])
                                user['roleIds'].append(dest_role_id)
                                user['roleIds'].remove(source_role_id)
                            else:
                                source_role['users'] = []
                                sumo.create_role(source_role)
                                updated_dest_roles = sumo.get_roles_sync()
                                for updated_dest_role in updated_dest_roles:
                                    if updated_dest_role[
                                            'name'] == source_role['name']:
                                        user['roleIds'].append(
                                            updated_dest_role['id'])
                                user['roleIds'].remove(source_role_id)
                                # print('Did not find role at target. Added role:' + source_role['name'])
                            # print('modified user: '******'firstName'], user['lastName'],
                                         user['email'], user['roleIds'])

                    except Exception as e:
                        logger.exception(e)
                        self.mainwindow.errorbox('Something went wrong:\n\n' +
                                                 str(e))
                        return
                self.update_users_and_roles_lists(UserListWidget,
                                                  RoleListWidget, url, id, key)

            else:
                self.mainwindow.errorbox(
                    "Please select at least one file to restore.")
                return
        else:
            self.mainwindow.errorbox(
                "Please update the directory list before restoring content")
        return
コード例 #2
0
    def copy_user(self, UserListWidgetFrom, UserListWidgetTo, RoleListWidgetTo,
                  fromurl, fromid, fromkey, tourl, toid, tokey):

        # Need to add check if user already exists and interactively ask if any missing roles should be created
        logger.info("Copying User(s)")
        try:
            selecteditems = UserListWidgetFrom.selectedItems()
            if len(selecteditems) > 0:  # make sure something was selected
                fromsumo = SumoLogic(fromid, fromkey, endpoint=fromurl)
                tosumo = SumoLogic(toid, tokey, endpoint=tourl)
                for selecteditem in selecteditems:
                    for object in UserListWidgetFrom.currentcontent:
                        if object['firstName'] + ' ' + object[
                                'lastName'] == str(selecteditem.text()):
                            user_id = object['id']
                            user = fromsumo.get_user_and_roles(user_id)
                            #print('unmodified user: '******'roles']:
                                role_already_exists_in_dest = False
                                source_role_id = source_role['id']
                                for dest_role in dest_roles:
                                    if dest_role['name'] == source_role[
                                            'name']:
                                        role_already_exists_in_dest = True
                                        dest_role_id = dest_role['id']
                                if role_already_exists_in_dest:
                                    #print('found role at target: ' + source_role['name'])
                                    user['roleIds'].append(dest_role_id)
                                    user['roleIds'].remove(source_role_id)
                                else:
                                    source_role['users'] = []
                                    tosumo.create_role(source_role)
                                    updated_dest_roles = tosumo.get_roles_sync(
                                    )
                                    for updated_dest_role in updated_dest_roles:
                                        if updated_dest_role[
                                                'name'] == source_role['name']:
                                            user['roleIds'].append(
                                                updated_dest_role['id'])
                                    user['roleIds'].remove(source_role_id)
                                    #print('Did not find role at target. Added role:' + source_role['name'])
                            #print('modified user: '******'firstName'],
                                               user['lastName'], user['email'],
                                               user['roleIds'])

                self.update_users_and_roles_lists(UserListWidgetTo,
                                                  RoleListWidgetTo, tourl,
                                                  toid, tokey)
                return

            else:
                self.mainwindow.errorbox('You have not made any selections.')
                return

        except Exception as e:
            logger.exception(e)
            self.mainwindow.errorbox('Something went wrong:' + str(e))
            self.update_users_and_roles_lists(UserListWidgetTo,
                                              RoleListWidgetTo, tourl, toid,
                                              tokey)
        return