in jobs/eam-integrations/scripts/workday_everfi/api/Everfi/everfi.py [0:0]
def get_users(self, fields,filter, locs, loc_map_table,hire_dates_inv):
def fix_none(x):
return '' if not x else x
def build_comparison_string(rec, locs, loc_map_table, hire_dates):
cc_learner = [x for x in rec.get('attributes',{}).get('user_rule_set_roles','[]')if x.get('rule_set','')=='cc_learner']
if not cc_learner:
is_manager ='non_supervisor'
else:
is_manager = fix_none(cc_learner[0].get('role',''))
if rec.get('relationships','').get('category_labels',''):
if len(rec.get('relationships','').get('category_labels','').get('data',''))>0:
hire_date_id = rec.get('relationships','').get('category_labels','').get('data','')[0].get('id')
hire_date = hire_dates_inv.get(hire_date_id, '')
else:
hire_date = ''
return fix_none(rec.get('attributes',{}).get('email','')) + "|"+\
fix_none(rec.get('attributes',{}).get('first_name','')) + "|"+\
fix_none(rec.get('attributes',{}).get('last_name','')) + "|"+\
fix_none(rec.get('attributes',{}).get('employee_id','')) + "|"+\
fix_none(str(rec.get('attributes',{}).get('location_id',''))) + "|"+\
is_manager + "|"+\
hire_date + "|"+\
rec.get('attributes',{}).get('sso_id','')
users_dict = {}
hire_dates_inv = {v: k for k, v in hire_dates_inv.items()}
comp = {}
curr_page = 1
params = {'page[per_page]': 300,
**filter,
**fields}
while True:
params['page[page]'] = curr_page
result = self.api_adapter.get(endpoint='v1/admin/users', params=params,headers=self.headers)
if len(result.data.get('data', [])) == 0:
return comp, users_dict
for rec in result.data.get('data',[]):
email = rec.get('attributes',{}).get('email','')
users_dict[email] = rec
comp[email] = build_comparison_string(rec, locs, loc_map_table,hire_dates_inv)
curr_page += 1