44from data_weaver import weave_entries , weave_entry
55import aiohttp
66import dotenv
7+ import yaml
78
89dotenv .load_dotenv ()
910sesame_api_baseurl = os .getenv ('SESAME_API_BASEURL' )
1011
11- configs = {
12- "taiga_etd.json" : {
13- "mapping" : {
14- "nom" : "inetOrgPerson.cn" ,
15- "prenom" : ["inetOrgPerson.sn" , "inetOrgPerson.givenName" , "additionalFields.attributes.supann.supannPrenomsEtatCivil" ],
16- "id_coord" : ["inetOrgPerson.uid" , "additionalFields.attributes.supann.supannRefId" ],
17- "email1" : "inetOrgPerson.mail" ,
18- "tel_mob" : "inetOrgPerson.mobile" ,
19- "adresse" : "inetOrgPerson.postalAddress" ,
20- "mot_de_passe_ldap" : "inetOrgPerson.userPassword" ,
21- "civilite" : ["additionalFields.attributes.supann.supanncivilite" , "additionalFields.attributes.supann.supannOIDCGenre" ],
22- "nom_marital" : "additionalFields.attributes.supann.supannNomdeNaissance" ,
23- "nss_date" : "additionalFields.attributes.supann.supannOIDCDatedeNaissance" ,
24- "nns_pays" : "additionalFields.attributes.supann.supannCodeINSEEPaysDeNaissance" ,
25- "nss_ville" : "additionalFields.attributes.supann.supannCodeINSEEVilleDeNaissance" ,
26- "email2" : "additionalFields.attributes.supann.supannAutreMail" ,
27- #"sesame": "additionalFields.attributes.supann.supannListeRouge",
28- #"outil de messagerie ou sesame ?": "additionalFields.attributes.mailForwardingAddress",
29- #"taiga + sesame": "additionalFields.attributes.supann.supannMailPerso",
30- #"calculé": "additionalFields.attributes.supann.supannRessourceEtatDate",
31- #"saisie": "additionalFields.attributes.supann.supannEntiteAffectationPrincipale"
32- },
33- "additionalFields" : {
34- "additionalFields.objectClasses" : ["supann" ],
35- "additionalFields.attributes.supann.supannTypeEntiteAffectation" : "etd" ,
36- "state" : - 1 ,
37- }
38- },
39- "taiga_adm.json" : {
40- "mapping" : {
41- "nom" : "inetOrgPerson.cn" ,
42- "prenom" : ["inetOrgPerson.sn" , "inetOrgPerson.givenName" , "additionalFields.attributes.supann.supannPrenomsEtatCivil" ],
43- "id_coord" : ["inetOrgPerson.uid" , "additionalFields.attributes.supann.supannEmpId" ],
44- "email1" : "inetOrgPerson.mail" ,
45- "tel_mob" : "inetOrgPerson.mobile" ,
46- "adresse" : "inetOrgPerson.postalAddress" ,
47- "mot_de_passe_ldap" : "inetOrgPerson.userPassword" ,
48- "civilite" : ["additionalFields.attributes.supann.supanncivilite" , "additionalFields.attributes.supann.supannOIDCGenre" ],
49- "nom_marital" : "additionalFields.attributes.supann.supannNomdeNaissance" ,
50- "nss_date" : "additionalFields.attributes.supann.supannOIDCDatedeNaissance" ,
51- "nns_pays" : "additionalFields.attributes.supann.supannCodeINSEEPaysDeNaissance" ,
52- "nss_ville" : "additionalFields.attributes.supann.supannCodeINSEEVilleDeNaissance" ,
53- "email2" : "additionalFields.attributes.supann.supannAutreMail" ,
54- #"sesame": "additionalFields.attributes.supann.supannListeRouge",
55- #"outil de messagerie ou sesame ?": "additionalFields.attributes.mailForwardingAddress",
56- #"taiga + sesame": "additionalFields.attributes.supann.supannMailPerso",
57- #"calculé": "additionalFields.attributes.supann.supannRoleGenerique",
58- #"saisie": "additionalFields.attributes.supann.supannParrainDN",
59- #"calcué": "additionalFields.attributes.supann.supannTypeEntiteAffectation",
60- #"": "additionalFields.attributes.supann.supannActivite",
61- #"taiga, sesame ou fixe": "additionalFields.attributes.supann.supannEmpDateFin"
62- },
63- "additionalFields" : {
64- "additionalFields.objectClasses" : ["supann" ],
65- "additionalFields.attributes.supann.supannTypeEntiteAffectation" : "adm" ,
66- "state" : - 1 ,
67- }
68- },
69- "taiga_esn.json" : {
70- "mapping" : {
71- "nom" : "inetOrgPerson.cn" ,
72- "prenom" : ["inetOrgPerson.sn" , "inetOrgPerson.givenName" , "additionalFields.attributes.supann.supannPrenomsEtatCivil" ],
73- "id_coord" : ["inetOrgPerson.uid" , "additionalFields.attributes.supann.supannEmpId" ],
74- "email1" : "inetOrgPerson.mail" ,
75- "tel_mob" : "inetOrgPerson.mobile" ,
76- "adresse" : "inetOrgPerson.postalAddress" ,
77- "mot_de_passe_ldap" : "inetOrgPerson.userPassword" ,
78- "civilite" : ["additionalFields.attributes.supann.supanncivilite" , "additionalFields.attributes.supann.supannOIDCGenre" ],
79- "nom_marital" : "additionalFields.attributes.supann.supannNomdeNaissance" ,
80- "nss_date" : "additionalFields.attributes.supann.supannOIDCDatedeNaissance" ,
81- "nns_pays" : "additionalFields.attributes.supann.supannCodeINSEEPaysDeNaissance" ,
82- "nss_ville" : "additionalFields.attributes.supann.supannCodeINSEEVilleDeNaissance" ,
83- "email2" : "additionalFields.attributes.supann.supannAutreMail" ,
84- #"sesame": "additionalFields.attributes.supann.supannListeRouge",
85- #"outil de messagerie ou sesame ?": "additionalFields.attributes.mailForwardingAddress",
86- #"taiga + sesame": "additionalFields.attributes.supann.supannMailPerso",
87- #"calculé": "additionalFields.attributes.supann.supannRoleGenerique",
88- #"saisie": "additionalFields.attributes.supann.supannParrainDN",
89- #"calcué": "additionalFields.attributes.supann.supannTypeEntiteAffectation",
90- #"": "additionalFields.attributes.supann.supannActivite",
91- #"taiga, sesame ou fixe": "additionalFields.attributes.supann.supannEmpDateFin"
92- },
93- "additionalFields" : {
94- "additionalFields.objectClasses" : ["supann" ],
95- "additionalFields.attributes.supann.supannTypeEntiteAffectation" : "esn" ,
96- "state" : - 1 ,
97- }
98- },
99- }
100-
10112async def gather_with_concurrency (n , tasks ):
10213 semaphore = asyncio .Semaphore (n )
10314
@@ -125,7 +36,7 @@ async def get_data(data, config):
12536 result .append (treated )
12637 return result
12738
128-
39+
12940
13041async def process_data (data , config , file , session ):
13142 print (f"Processing { file } " )
@@ -136,15 +47,20 @@ async def process_data(data, config, file, session):
13647 await gather_with_concurrency (25 , tasks )
13748 print (f"Processed { file } " )
13849
50+ async def load_config ():
51+ with open ('./config.yml' , 'r' , encoding = 'utf-8' ) as fichier :
52+ return yaml .load (fichier , Loader = yaml .FullLoader )
53+
13954async def import_ind ():
55+ configs = await load_config ()
14056 cache_files = os .listdir ('./cache' )
14157 datas = {}
14258 for file in cache_files :
143- with open (f'./cache/{ file } ' , 'r' , encoding = 'utf-8' ) as fichier :
144- datas [file ] = json .load (fichier ).get ('data' )
59+ if file in configs .keys ():
60+ print (f"Loading { file } , keys: { configs .keys ()} " )
61+ with open (f'./cache/{ file } ' , 'r' , encoding = 'utf-8' ) as fichier :
62+ datas [file ] = json .load (fichier ).get ('data' )
14563
14664 async with aiohttp .ClientSession () as session :
147- # for file in cache_files:
148- # await process_data(datas[file], configs[file], file, session)
149- tasks = [process_data (datas [file ], configs [file ], file , session ) for file in cache_files ]
150- await gather_with_concurrency (10 , tasks )
65+ tasks = [process_data (datas [file ], configs [file ], file , session ) for file in cache_files if file in configs .keys ()]
66+ await gather_with_concurrency (10 , tasks )
0 commit comments