def disconnect_user_from_group(current_session, usr, groupname): grp = gp.get_group(current_session, groupname) if not grp: return {"warning": ("Group {0} doesn't exist".format(groupname))} response = gp.remove_user_from_group(current_session, usr, grp) projects = gp.get_group_projects(current_session, groupname) projects_data = [ pj.get_project(current_session, project).auth_id for project in projects ] return response
def remove_projects_from_group(current_session, groupname, projects=None): if not projects: projects = [] grp = gp.get_group(current_session, groupname) usrs = get_group_users(current_session, groupname) users_names = [x["name"] for x in usrs["users"]] if not grp: raise UserError("Error: group does not exist") responses = [] for proj in projects: for usr in users_names: update_user_projects_within_group(current_session, usr, groupname, proj) response = disconnect_project_from_group(current_session, grp, proj) responses.append(response) return {"result": responses}
def add_projects_to_group(current_session, groupname, projects=None): if not projects: projects = [] grp = gp.get_group(current_session, groupname) usrs = gp.get_group_users(current_session, groupname) if not grp: raise UserError("Error: group does not exist") responses = [] for proj in projects: try: response = connect_project_to_group(current_session, grp, proj) responses.append(response) update_group_users_projects(current_session, grp, proj, usrs) except Exception as e: current_session.rollback() raise e return {"result": responses}
def connect_user_to_group(current_session, usr, groupname=None): grp = gp.get_group(current_session, groupname) if not grp: raise UserError(("Group {0} doesn't exist".format(groupname))) else: responses = [] responses.append(gp.connect_user_to_group(current_session, usr, grp)) projects = gp.get_group_projects(current_session, groupname) projects_data = [ pj.get_project(current_session, project).auth_id for project in projects ] projects_list = [{ "auth_id": auth_id, "privilege": ["read"] } for auth_id in projects_data] for project in projects_list: connect_user_to_project(current_session, usr, project) return responses