@@ -37,13 +37,24 @@ def returncode(code,message):
3737 return json .dumps (data )
3838
3939def is_backend_concerned (entity ):
40- peopleType = find_key (entity ,config ('branchAttr' ))
40+ br = config ('branchAttr' )
41+ entry = make_entry_array (entity );
42+ if config ('branchAttr' ) in entry :
43+ peopleType = entry [config ('branchAttr' )]
44+ else :
45+ # il n y a pas de branchAttr dans le fichier de config on traitre tout
46+ return True
47+ listBackend = config ('backendFor' )
48+ c = type (peopleType )
4149 if type (peopleType ) is list :
42- listBackend = config ('backendFor' )
4350 for v in peopleType :
4451 peopleType = v
4552 if (listBackend .find (peopleType ) == - 1 ):
4653 return False
54+ else :
55+ if (listBackend .find (peopleType ) == - 1 ):
56+ return False
57+
4758 return True
4859
4960def find_key (element , key ):
@@ -61,28 +72,35 @@ def _finditem(obj, key):
6172 return item
6273 return ""
6374def make_entry_array (entity ):
64- data = {}
75+ data = {}
6576 if "identity" in entity ['payload' ]:
6677 objectclasses = entity ['payload' ]['identity' ]['identity' ]['additionalFields' ]['objectClasses' ]
67- inetOrgPerson = entity ['payload' ]['identity' ]['identity' ]['inetOrgPerson' ]
68- if 'attributes' in entity ['payload' ]['identity' ]['identity' ]['additionalFields' ]:
69- additionalFields = entity ['payload' ]['identity' ]['identity' ]['additionalFields' ]['attributes' ]
78+ inetOrgPerson = entity ['payload' ]['identity' ]['identity' ]['inetOrgPerson' ]
79+ addFieldsDict = entity ['payload' ]['identity' ]['identity' ]['additionalFields' ]
80+ if 'attributes' in addFieldsDict :
81+ additionalFields = entity ['payload' ]['identity' ]['identity' ]['additionalFields' ]['attributes' ]
7082 else :
7183 additionalFields = {}
84+
7285 else :
73- objectclasses = entity ['payload' ]['additionalFields' ]['objectClasses' ]
86+ objectclasses = entity ['payload' ]['additionalFields' ]['objectClasses' ]
7487 inetOrgPerson = entity ['payload' ]['inetOrgPerson' ]
75- if 'attributes' in entity ['payload' ]['additionalFields' ]:
76- additionalFields = entity ['payload' ]['additionalFields' ]['attributes' ]
77- else :
78- additionalFields = {}
79- #inetOrgPerson
80- for k ,v in inetOrgPerson .items ():
81- data [k ]= str (v )
88+ additionalFields = entity ['payload' ]['additionalFields' ]['attributes' ]
89+ # inetOrgPerson
90+ for k , v in inetOrgPerson .items ():
91+ if type (v ) is int :
92+ v = str (v )
93+ data [k ] = v
8294
8395 for obj in objectclasses :
84- for k ,v in additionalFields [obj ].items ():
85- data [k ]= str (v )
96+ # recherche si l objectclass est exclu
97+ exclusions = config ('excludedObjectclasses' )
98+ if exclusions .find (obj .lower ()) == - 1 :
99+ if obj in additionalFields .keys ():
100+ for k , v in additionalFields [obj ].items ():
101+ if type (v ) is int :
102+ v = str (v )
103+ data [k ] = v
86104 return data
87105
88106
0 commit comments