55import aiohttp
66import dotenv
77import yaml
8+ import re
89
910dotenv .load_dotenv ()
1011sesame_api_baseurl = os .getenv ('SESAME_API_BASEURL' )
@@ -27,7 +28,7 @@ async def read_response(response):
2728 jsonMessage = json .loads (message )
2829 print (jsonMessage )
2930
30- async def send_request (session , url , json ):
31+ async def send_request (session , url ,exclusions , json ):
3132 headers = {
3233 "Authorization" : f"Bearer { sesame_api_token } " ,
3334 "Content-Type" : "application/json; charset=utf-8" ,
@@ -36,7 +37,14 @@ async def send_request(session, url, json):
3637 "filters[inetOrgPerson.employeeNumber]" : f"{ json .get ('inetOrgPerson' , {}).get ('employeeNumber' )} " ,
3738 "filters[inetOrgPerson.employeeType]" : "TAIGA" ,
3839 }
39-
40+ for regex in exclusions :
41+ for r in regex :
42+ value = json .get ('inetOrgPerson' ).get (r )
43+ if value :
44+ result = re .search (regex [r ],value )
45+ if result != None :
46+ print (f"EXCLUDED { json .get ('inetOrgPerson' , {}).get ('employeeNumber' )} { json .get ('inetOrgPerson' , {}).get ('cn' )} " )
47+ return
4048 try :
4149
4250 async with session .post (url , json = json , headers = headers , params = params ) as response :
@@ -75,7 +83,8 @@ async def process_data(data, config, file, session):
7583 result = await get_data (data , config )
7684 with open (f'./data/{ file } ' , 'w' , encoding = 'utf-8' ) as fichier :
7785 json .dump (result , fichier , ensure_ascii = False , indent = 4 )
78- tasks = [send_request (session , f'{ sesame_api_baseurl } /management/identities/upsert' , entry ) for entry in result ]
86+ exclude = config .get ('exclude' ,[])
87+ tasks = [send_request (session , f'{ sesame_api_baseurl } /management/identities/upsert' ,config .get ('exclude' ,[]),entry ) for entry in result ]
7988 await gather_with_concurrency (sesame_import_parallels_files , tasks )
8089 print (f"Processed { file } " )
8190
0 commit comments