def get_users()

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