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
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