@@ -48,7 +48,7 @@ def get_organization(organization_name):
4848 try :
4949 cla .log .debug (f'Loading GitHub by organization name: { organization_name } ..' )
5050 org = github_organization .get_organization_by_lower_name (organization_name )
51- cla .log .debug (f'Loaded GitHub by organization name: { org } ' )
51+ cla .log .debug (f'Loaded GitHub organization by name: { org } ' )
5252 except DoesNotExist as err :
5353 cla .log .warning (f'organization name { organization_name } does not exist' )
5454 return {'errors' : {'organization_name' : str (err )}}
@@ -68,7 +68,7 @@ def get_organization_model(organization_name) -> Optional[GitHubOrg]:
6868 try :
6969 cla .log .debug (f'Loading GitHub by organization name: { organization_name } ..' )
7070 org = github_organization .get_organization_by_lower_name (organization_name )
71- cla .log .debug (f'Loaded GitHub by organization name: { org } ' )
71+ cla .log .debug (f'Loaded GitHub organization model by name: { org } ' )
7272 return org
7373 except DoesNotExist as err :
7474 cla .log .warning (f'organization name { organization_name } does not exist, error: { err } ' )
@@ -138,9 +138,13 @@ def update_organization(organization_name, # pylint: disable=too-many-arguments
138138 if organization_sfid :
139139 github_organization .set_organization_sfid (organization_sfid )
140140
141- github_organization .save ()
142- cla .log .debug ('updated organization: {}' .format (organization_name ))
143- return github_organization .to_dict ()
141+ try :
142+ github_organization .save ()
143+ cla .log .debug ('updated organization: {}' .format (organization_name ))
144+ return github_organization .to_dict ()
145+ except Exception as err :
146+ cla .log .error (f"failed to save organization { organization_name } : { err } " )
147+ return {"errors" : {"organization_name" : str (err )}}
144148
145149
146150def delete_organization (auth_user , organization_name ):
@@ -296,6 +300,12 @@ def activity(action: str, event_type: str, body: dict):
296300def handle_installation_event (action : str , body : dict ):
297301 func_name = 'github.activity.handle_installation_event'
298302 cla .log .debug (f'{ func_name } - processing github [installation] activity callback...' )
303+ installation_id = None
304+ try :
305+ installation_id = body ['installation' ]['id' ]
306+ except KeyError :
307+ cla .log .warning (f'{ func_name } - unable to determine installation id from body: { json .dumps (body )} .' )
308+ cla .log .debug (f'{ func_name } - processing github installation { installation_id } ...' )
299309
300310 # New Installations
301311 if action == 'created' :
@@ -306,7 +316,7 @@ def handle_installation_event(action: str, body: dict):
306316 cla .log .warning (f'{ func_name } - Unable to determine organization name from the github installation event '
307317 f'with action: { action } '
308318 f'event body: { json .dumps (body )} ' )
309- return {'status' , f'GitHub installation { action } event malformed.' }
319+ return {'status' : f'GitHub installation { action } event malformed.' }
310320
311321 cla .log .debug (f'Locating organization using name: { org_name } ' )
312322 existing = get_organization (org_name )
@@ -315,23 +325,16 @@ def handle_installation_event(action: str, body: dict):
315325 'but the organization is not configured in EasyCLA' )
316326 # TODO: Need a way of keeping track of new organizations that don't have projects yet.
317327 return {'status' : 'Github Organization must be created through the Project Management Console.' }
318- elif not existing ['organization_installation_id' ]:
319- update_organization (
320- existing ['organization_name' ],
321- existing ['organization_sfid' ],
322- body ['installation' ]['id' ],
323- )
324- cla .log .info (f'{ func_name } - Organization enrollment completed: { existing ["organization_name" ]} ' )
328+ elif not existing .get ('organization_installation_id' ):
329+ cla .log .info (f'{ func_name } - Setting installation ID for github organization: { existing .get ("organization_name" )} to { installation_id } ' )
330+ update_organization (existing .get ('organization_name' ), existing .get ('organization_sfid' ), installation_id )
331+ cla .log .info (f'{ func_name } - Organization enrollment completed: { existing .get ("organization_name" )} ' )
325332 return {'status' : 'Organization Enrollment Completed. CLA System is operational' }
326333 else :
327- cla .log .info (f'{ func_name } - Organization already enrolled: { existing ["organization_name" ]} ' )
328- cla .log .info (f'{ func_name } - Updating installation ID for '
329- f'github organization: { existing ["organization_name" ]} ' )
330- update_organization (
331- existing ['organization_name' ],
332- existing ['organization_sfid' ],
333- body ['installation' ]['id' ],
334- )
334+ cla .log .info (f'{ func_name } - Organization already enrolled: { existing .get ("organization_name" )} ' )
335+ cla .log .info (f'{ func_name } - installation ID: { existing .get ("organization_installation_id" )} ' )
336+ cla .log .info (f'{ func_name } - Updating installation ID for github organization: { existing .get ("organization_name" )} to { installation_id } ' )
337+ update_organization (existing .get ('organization_name' ), existing .get ('organization_sfid' ), installation_id )
335338 return {'status' : 'Already Enrolled Organization Updated. CLA System is operational' }
336339
337340 elif action == 'deleted' :
@@ -341,7 +344,7 @@ def handle_installation_event(action: str, body: dict):
341344 cla .log .warning ('Unable to determine organization name from the github installation event '
342345 f'with action: { action } '
343346 f'event body: { json .dumps (body )} ' )
344- return {'status' , f'GitHub installation { action } event malformed.' }
347+ return {'status' : f'GitHub installation { action } event malformed.' }
345348 repositories = Repository ().get_repositories_by_organization (org_name )
346349 notify_project_managers (repositories )
347350 return
0 commit comments