in jobs/eam-integrations/scripts/workday_everfi_integration.py [0:0]
def run(self, limit):
# ========================================================
# Getting Everfi hire dates, locations and locations mapping table ...
# ========================================================
try:
self.logger.info("Getting everfi hire dates")
hire_date_category_id, hire_dates = self.everfi.everfi_api.get_hire_dates()
self.logger.info(f"Number of hire dates: {len(hire_dates)}")
self.logger.info("Getting everfi locations")
locs = self.everfi.everfi_api.get_locations()
self.logger.info(f"Number of locations: {len(locs)}")
self.logger.info("Getting everfi mapping table")
loc_map_table = self.everfi.everfi_api.get_locations_mapping_table()
self.logger.info(f"Number of mappins: {len(loc_map_table)}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Getting Everfi hire dates,locations and locations mapping table ...")
sys.exit(1)
# ========================================================
# Getting Workday users...
# ========================================================
self.logger.info("Getting Workday users...")
try:
wd_comp, wd_users = self.workday.get_wd_users(locs, loc_map_table)
self.logger.info(f"Number of wd users: {len(wd_users)}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Getting Workday users...")
sys.exit(1)
# ========================================================
# Getting Everfi users...
# ========================================================
self.logger.info("Getting Everfi users...")
try:
everfi_comp, everfi_users = self.everfi.get_everfi_users(locs, loc_map_table, hire_dates)
self.logger.info(f"Number of Everfi users: {len(everfi_users)}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Getting Everfi users...")
sys.exit(1)
# ========================================================
# Comparing users...
# ========================================================
self.logger.info("Comparing users...")
try:
add_list, del_list, upd_list = integration.compare_users(
wd_comp, everfi_comp, wd_users, everfi_users
)
self.logger.info(f"Number of users to delete w/o limit={len(del_list)} with limit={len(del_list[:limit])}")
self.logger.info(f"Number of users to add w/o limit={len(add_list)} with limit={len(add_list[:limit])}")
self.logger.info(f"Number of users to update w/o limit={len(upd_list)} with limit={len(upd_list[:limit])}")
del_list = del_list[:limit]
add_list = add_list[:limit]
upd_list = upd_list[:limit]
except (Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Comparing users...")
sys.exit(1)
# ========================================================
# Deleting Everfi users ...
# ========================================================
self.logger.info("Deleting Everfi users ...")
try:
count_dels = self.everfi.deactivate_users(del_list, everfi_users)
self.logger.info(f"Number of users deleted {count_dels}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Faile while Deleting Everfi users ...")
sys.exit(1)
# ========================================================
# Adding Everfi users ...
# ========================================================
self.logger.info("Adding Everfi users ...")
try:
count_add = self.everfi.add_everfi_users(
hire_date_category_id, hire_dates, locs, add_list, wd_users, loc_map_table
)
self.logger.info(f"Number of users added {count_add}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Adding Everfi users ...")
sys.exit(1)
# ========================================================
# Updating Everfi users ...
# ========================================================
self.logger.info("Updating Everfi users ...")
try:
count_upd = self.everfi.upd_everfi_users(
hire_date_category_id,
hire_dates,
locs,
upd_list,
wd_users,
everfi_users,
loc_map_table,
)
self.logger.info(f"Number of users updated {count_upd}")
except (APIAdaptorException, Exception) as e:
self.logger.error(str(e))
self.logger.critical("Failed while Updating Everfi users ...")
sys.exit(1)
self.logger.info("End of integration")