From 0742edd1b16460b9a2c2280f9e71ea1505f3c1b3 Mon Sep 17 00:00:00 2001 From: Mike Holmes Date: Fri, 14 Aug 2020 12:02:30 +0100 Subject: include lists --- project_dependance.py | 105 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 18 deletions(-) diff --git a/project_dependance.py b/project_dependance.py index a8afe48..4bb19a1 100644 --- a/project_dependance.py +++ b/project_dependance.py @@ -22,7 +22,9 @@ parser.add_argument("--department_group", default=False, action='store_true', he parser.add_argument("--all_projects", default=False, action='store_true', help="list all projects") parser.add_argument("--verbose", default=False, action='store_true', help="verbose") parser.add_argument("--filter_list", default=[], nargs='+', help="filter out a node name, such as team, project or member") -parser.add_argument("--include_list", default=[], nargs='+', help="filter out a node name, such as team, project or member") +parser.add_argument("--include_company_list", default=[], nargs='+', help="filter out a node name, such as team, project or member") +parser.add_argument("--include_project_list", default=[], nargs='+', help="filter out a node name, such as team, project or member") +parser.add_argument("--include_team_list", default=[], nargs='+', help="filter out a node name, such as team, project or member") parser.add_argument("--center_on", help="center on a specific node which can be a company, team or project") args = parser.parse_args() @@ -70,6 +72,59 @@ def filter_node(data, filter_list): return(data) +def include_company_node(data, include_list): + if (args.verbose == 1): + print (data) + print("") + print ("including ",include_list) + + if include_list: + if 'Assignee Company' in data.columns: + data_filter = data['Assignee Company'].isin(include_list) + data = data[data_filter] + + if (args.verbose == 1): + print (data) + print("") + + return(data) + +def include_project_node(data, include_list): + if (args.verbose == 1): + print (data) + print("") + print ("including ",include_list) + + if include_list: + if 'Project' in data.columns: + data_filter = data['Project'].isin(include_list) + data = data[data_filter] + if 'project' in data.columns: + data_filter = data['project'].isin(include_list) + data = data[data_filter] + + if (args.verbose == 1): + print (data) + print("") + + return(data) + +def include_team_node(data, include_list): + if (args.verbose == 1): + print (data) + print("") + print ("including ",include_list) + + if include_list: + if 'Assignee Team' in data.columns: + data_filter = data['Assignee Team'].isin(include_list) + data = data[data_filter] + + if (args.verbose == 1): + print (data) + print("") + + return(data) #Read all the data @@ -77,37 +132,52 @@ def filter_node(data, filter_list): #Assignee Team | Project | Count Unique assignee url="https://docs.google.com/spreadsheets/d/e/2PACX-1vSGKF1LA9ONNq1S3ZTb-7hk-kJ7XlXdVQKDFmFJbTpLa0u_cVqTTjHkA8TdxougbN_DvmdiVbsZJ9UY/pub?gid=954864288&single=true&output=csv" team_project = pd.read_csv(url) +team_project = filter_node(team_project, args.filter_list) +team_project = include_project_node(team_project, args.include_project_list) #Engineers in JIRA - Governing Entitiy #Governing Entity | project url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSGKF1LA9ONNq1S3ZTb-7hk-kJ7XlXdVQKDFmFJbTpLa0u_cVqTTjHkA8TdxougbN_DvmdiVbsZJ9UY/pub?gid=1685920531&single=true&output=csv' governing_project = pd.read_csv(url) +governing_project = filter_node(governing_project, args.filter_list) +governing_project = include_project_node(governing_project, args.include_project_list) #Engineers in JIRA - OCE Department _ Team JIRA #department | team | type url ="https://docs.google.com/spreadsheets/d/e/2PACX-1vSGKF1LA9ONNq1S3ZTb-7hk-kJ7XlXdVQKDFmFJbTpLa0u_cVqTTjHkA8TdxougbN_DvmdiVbsZJ9UY/pub?gid=1268085837&single=true&output=csv" department_team_type = pd.read_csv(url) +department_team_type = filter_node(department_team_type, args.filter_list) +department_team_type = include_team_node(department_team_type, args.include_project_list) + #Engineers in JIRA - Project Link types #project linked project dependson relates to url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSGKF1LA9ONNq1S3ZTb-7hk-kJ7XlXdVQKDFmFJbTpLa0u_cVqTTjHkA8TdxougbN_DvmdiVbsZJ9UY/pub?gid=1744118841&single=true&output=csv" project_links = pd.read_csv(url,names=["project", "linked", "depends_on", "relates_to"],skiprows=2) +project_links = filter_node(project_links, args.filter_list) +project_links = include_project_node(project_links, args.include_project_list) #Engineers in JIRA - Companies in Projects #compay : project url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSGKF1LA9ONNq1S3ZTb-7hk-kJ7XlXdVQKDFmFJbTpLa0u_cVqTTjHkA8TdxougbN_DvmdiVbsZJ9UY/pub?gid=1310895524&single=true&output=csv" company_project = pd.read_csv(url) +company_project = filter_node(company_project, args.filter_list) +company_project = include_company_node(company_project, args.include_company_list) + + + + + if (args.governing_group == 1): mylist = defaultdict(list) print ("//cluster governance") - data = filter_node(governing_project, args.filter_list) - for row in data.index: + for row in governing_project.index: #same Governing Entity - if data['Governing Entity'][row]: - mylist[data['Governing Entity'][row]].append(data['project name'][row]) + if governing_project['Governing Entity'][row]: + mylist[governing_project['Governing Entity'][row]].append(governing_project['project name'][row]) for gov in mylist: print ( "") @@ -126,12 +196,10 @@ if (args.department_group == 1): mylist = defaultdict(list) print ("//cluster departments") - filter_node(department_team_type, args.filter_list) - - for row in data.index: + for row in department_team_type.index: #same Governing Entity - if data['Assignee Department'][row]: - mylist[data['Assignee Department'][row]].append(data['Assignee Team'][row]) + if department_team_type['Assignee Department'][row]: + mylist[department_team_type['Assignee Department'][row]].append(department_team_type['Assignee Team'][row]) print("") for gov in mylist: @@ -148,6 +216,7 @@ data = filter_node(team_project, args.filter_list) print("") if (args.teams == 1): print ("//generate Teams with a with a unique shape and colour") + data.drop_duplicates(subset='Assignee Team') for row in data.index: print (" \"", data['Assignee Team'][row],"\"", " [", "fillcolor=yellow, style=\"rounded,filled\", shape=diamond","]", sep='') @@ -176,28 +245,26 @@ data.fillna(0, inplace=True) if (args.relates == 1): print("") print ("//generate relates to links") -for row in data.index: - if data['relates_to'][row]: - + for row in data.index: + if data['relates_to'][row]: print (" \"", data['project'][row],"\"", " -> ", "\"", data['linked'][row],"\"", " [", "label=\"R", int(data['relates_to'][row]),"\"", " weight=", data['relates_to'][row]," color=blue", " style=dotted ","]", sep='') if (args.dependance == 1): print("") print ("//generate depends on links") -for row in data.index: - if data['depends_on'][row]: + for row in data.index: + if data['depends_on'][row]: print (" \"",data['project'][row],"\"", " -> ", "\"",data['linked'][row],"\""," [", " taillabel=\"D", int(data['depends_on'][row]),"\"", " weight=",data['depends_on'][row], "]", sep='' ) print("") -data = filter_node(company_project, args.filter_list) - if (args.company == 1): print("") - print ("// generate the graph for assignee teams to projects") + print ("// generate the graph for assignee teams to projects") + data = filter_node(company_project, args.filter_list) for row in data.index: print (" \"", data['Assignee Company'][row],"\"", " -> ", "\"", data['Project'][row],"\"", " [", "taillabel=\"A", int(data['COUNTUNIQUE of Assignee'][row]),"\"", " weight=", @@ -206,6 +273,8 @@ if (args.company == 1): if (args.company == 1): print("") print ("// generate company shape and colour") + + data = filter_node(company_project, args.filter_list) #remove duplicates data.drop_duplicates(subset="Assignee Company", keep = 'first', inplace = True) for row in data.index: -- cgit v1.2.3