1+ import collections
12import re
23from typing import List
34
@@ -29,7 +30,8 @@ def apigee_apps_to_product_map(apps_list: List[dict], product_filter: str = None
2930 dict (
3031 appId = app ["appId" ],
3132 appName = app ["name" ],
32- developerId = app ["developerId" ],
33+ developerId = app .get ("developerId" ),
34+ companyName = app .get ("companyName" ),
3335 consumerKey = cred ["consumerKey" ],
3436 apiproduct = api_product
3537 )
@@ -73,28 +75,33 @@ def apigee_remove_proxy_from_product(product: dict, proxy_to_remove):
7375 return product
7476
7577
76- def apigee_teams_map (teams : List [dict ]):
78+ def apigee_teams_map (teamMembers : List [dict ], teams : List [dict ]):
79+ joined = collections .defaultdict (dict )
80+ for item in teamMembers + teams :
81+ joined [item ['name' ]].update (item )
82+ full_teams = list (joined .values ())
7783
7884 return {
79- f" { team ['id' ] } @devteam.apigee.io" : {
80- "contact" : team ['pointOfContact' ] ,
81- "members" : list ( mem [ 'userId' ] for mem in team . get ( 'memberships' , []))
85+ team ['name' ] : {
86+ "contact" : next (( attr . get ( 'value' ) for attr in team ['attributes' ] if attr [ 'name' ] == 'ADMIN_EMAIL' ), {}) ,
87+ "members" : team [ 'members' ]
8288 }
83- for team in teams
89+ for team in full_teams
8490 }
8591
8692
8793def apigee_teams_to_point_of_contact (teams : List [dict ]):
8894
8995 return {
90- f"{ team ['id' ]} @devteam.apigee.io" : team ['pointOfContact' ] for team in teams
96+ next ((attr .get ('value' ) for attr in team ['attributes' ] if attr ['name' ] == 'ADMIN_EMAIL' ), {})
97+ for team in teams
9198 }
9299
93100
94101def apigee_teams_to_members (teams : List [dict ]):
95102
96103 return {
97- f" { team [ 'id' ] } @devteam.apigee.io" : list ( mem [ 'userId' ] for mem in team . get ('memberships ' , []) ) for team in teams
104+ team . get ('members ' , []) for team in teams
98105 }
99106
100107
@@ -116,18 +123,17 @@ def apigee_product_developers(
116123 result [product_name ] = []
117124
118125 for app in apps :
119- developer = dev_id_to_email [app ["developerId" ]]
120-
121- team = teams_map .get (developer , {})
122-
123126 entry = {
124- "app" : app ["appName" ],
125- "developer" : developer
127+ "app" : app ["appName" ]
126128 }
127129
130+ team = teams_map .get (app .get ("companyName" ), {})
131+
128132 if team :
129133 entry ['developer' ] = team ['contact' ]
130134 entry ['team' ] = team ['members' ]
135+ else :
136+ entry ['developer' ] = dev_id_to_email [app ["developerId" ]]
131137
132138 result [product_name ].append (entry )
133139
@@ -137,10 +143,6 @@ def apigee_product_developers(
137143
138144 return result
139145
140- # return {
141- # f"{team['id']}@devteam.apigee.io": list(mem['userId'] for mem in team.get('memberships', [])) for team in teams
142- # }
143-
144146
145147class FilterModule :
146148
0 commit comments