Add concatenate feature + use constants
This commit is contained in:
parent
27f3145857
commit
f2e94d53fc
47
main.py
47
main.py
@ -72,26 +72,29 @@ def append_extra_fields_to_ldap_user(ldap_user: WritableEntry, dolibarr_user: di
|
|||||||
ldap_user.objectClass += extra_object_class
|
ldap_user.objectClass += extra_object_class
|
||||||
|
|
||||||
for extra_field in config.LDAP_USERS_EXTRA_FIELDS:
|
for extra_field in config.LDAP_USERS_EXTRA_FIELDS:
|
||||||
dolibarr_attrs, ldap_attr = extra_field.split(':')
|
dolibarr_attrs, ldap_attr = extra_field.split('::')
|
||||||
dolibarr_attrs = dolibarr_attrs.split('|')
|
dolibarr_attrs = dolibarr_attrs.split('+')
|
||||||
values = []
|
values = []
|
||||||
for dolibarr_attr in dolibarr_attrs:
|
if dolibarr_attrs[0].startswith('GROUP__'):
|
||||||
if dolibarr_attr.startswith('GROUP__'):
|
|
||||||
continue
|
continue
|
||||||
|
for dolibarr_attr in dolibarr_attrs:
|
||||||
if dolibarr_attr.endswith('[]'):
|
if dolibarr_attr.endswith('[]'):
|
||||||
dolibarr_attr = dolibarr_attr[:-2]
|
dolibarr_attr = dolibarr_attr[:-2]
|
||||||
value = dolibarr_user['array_options'][f'options_{dolibarr_attr}']
|
value = dolibarr_user.get(dolibarr_attr, None) or dolibarr_user['array_options'][f'options_{dolibarr_attr}']
|
||||||
value = value.split() if value else []
|
value = value.split() if value else []
|
||||||
values += value
|
values += value
|
||||||
else:
|
else:
|
||||||
value = dolibarr_user['array_options'][f'options_{dolibarr_attr}']
|
if dolibarr_attr.startswith("'") and dolibarr_attr.endswith("'"):
|
||||||
|
value = dolibarr_attr[1:-1]
|
||||||
|
else:
|
||||||
|
value = dolibarr_user.get(dolibarr_attr, None) or dolibarr_user['array_options'][f'options_{dolibarr_attr}']
|
||||||
if value:
|
if value:
|
||||||
values.append(value)
|
values.append(value)
|
||||||
if ldap_attr.endswith('[]'):
|
if ldap_attr.endswith('[]'):
|
||||||
ldap_attr = ldap_attr[:-2]
|
ldap_attr = ldap_attr[:-2]
|
||||||
value = values
|
value = values
|
||||||
else:
|
else:
|
||||||
value = values[0] if values else ""
|
value = "".join(map(str, values))
|
||||||
setattr(ldap_user, ldap_attr, value)
|
setattr(ldap_user, ldap_attr, value)
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +102,7 @@ def append_extra_group_fields_to_ldap_user(ldap_user: WritableEntry, dolibarr_us
|
|||||||
oldgroupid: int | None = None, newgroupid: int | None = None, new_group: dict | None = None):
|
oldgroupid: int | None = None, newgroupid: int | None = None, new_group: dict | None = None):
|
||||||
if not any(dolibarr_attr.startswith('GROUP')
|
if not any(dolibarr_attr.startswith('GROUP')
|
||||||
for extra_field in config.LDAP_USERS_EXTRA_FIELDS
|
for extra_field in config.LDAP_USERS_EXTRA_FIELDS
|
||||||
for dolibarr_attr in extra_field.split(':')[0].split('|')):
|
for dolibarr_attr in extra_field.split('::')[0].split('|')):
|
||||||
return
|
return
|
||||||
|
|
||||||
user_id = dolibarr_user['id']
|
user_id = dolibarr_user['id']
|
||||||
@ -117,28 +120,29 @@ def append_extra_group_fields_to_ldap_user(ldap_user: WritableEntry, dolibarr_us
|
|||||||
return
|
return
|
||||||
|
|
||||||
for extra_field in config.LDAP_USERS_EXTRA_FIELDS:
|
for extra_field in config.LDAP_USERS_EXTRA_FIELDS:
|
||||||
dolibarr_attrs, ldap_attr = extra_field.split(':')
|
dolibarr_attrs, ldap_attr = extra_field.split('::')
|
||||||
dolibarr_attrs = dolibarr_attrs.split('|')
|
dolibarr_attrs = dolibarr_attrs.split('+')
|
||||||
values = []
|
values = []
|
||||||
for dolibarr_attr in dolibarr_attrs:
|
if not dolibarr_attrs[0].startswith('GROUP__'):
|
||||||
if not dolibarr_attr.startswith('GROUP__'):
|
|
||||||
continue
|
continue
|
||||||
|
for dolibarr_attr in dolibarr_attrs:
|
||||||
dolibarr_attr = dolibarr_attr[7:]
|
dolibarr_attr = dolibarr_attr[7:]
|
||||||
for dolibarr_group in dolibarr_groups:
|
for dolibarr_group in dolibarr_groups:
|
||||||
if dolibarr_attr.endswith('[]'):
|
if dolibarr_attr.endswith('[]'):
|
||||||
dolibarr_attr = dolibarr_attr[:-2]
|
dolibarr_attr = dolibarr_attr[:-2]
|
||||||
value = dolibarr_group.get(dolibarr_attr, dolibarr_group['array_options'][f'options_{dolibarr_attr}'])
|
value = dolibarr_group.get(dolibarr_attr, None) or dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
||||||
value = value.split() if value else []
|
value = value.split() if value else []
|
||||||
values += value
|
values += value
|
||||||
else:
|
else:
|
||||||
value = dolibarr_group.get(dolibarr_attr, dolibarr_group['array_options'][f'options_{dolibarr_attr}'])
|
value = dolibarr_group.get(dolibarr_attr, None) or dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
||||||
if value:
|
if value:
|
||||||
values.append(value)
|
values.append(value)
|
||||||
|
break # Don't concatenate the value for multiple groups
|
||||||
if ldap_attr.endswith('[]'):
|
if ldap_attr.endswith('[]'):
|
||||||
ldap_attr = ldap_attr[:-2]
|
ldap_attr = ldap_attr[:-2]
|
||||||
value = values
|
value = values
|
||||||
else:
|
else:
|
||||||
value = values[0] if values else ""
|
value = "".join(map(str, values))
|
||||||
setattr(ldap_user, ldap_attr, value)
|
setattr(ldap_user, ldap_attr, value)
|
||||||
|
|
||||||
|
|
||||||
@ -178,24 +182,27 @@ def append_extra_fields_to_ldap_group(ldap_group: WritableEntry, dolibarr_group:
|
|||||||
ldap_group.objectClass += extra_object_class
|
ldap_group.objectClass += extra_object_class
|
||||||
|
|
||||||
for extra_field in config.LDAP_GROUPS_EXTRA_FIELDS:
|
for extra_field in config.LDAP_GROUPS_EXTRA_FIELDS:
|
||||||
dolibarr_attrs, ldap_attr = extra_field.split(':')
|
dolibarr_attrs, ldap_attr = extra_field.split('::')
|
||||||
dolibarr_attrs = dolibarr_attrs.split('|')
|
dolibarr_attrs = dolibarr_attrs.split('+')
|
||||||
values = []
|
values = []
|
||||||
for dolibarr_attr in dolibarr_attrs:
|
for dolibarr_attr in dolibarr_attrs:
|
||||||
if dolibarr_attr.endswith('[]'):
|
if dolibarr_attr.endswith('[]'):
|
||||||
dolibarr_attr = dolibarr_attr[:-2]
|
dolibarr_attr = dolibarr_attr[:-2]
|
||||||
value = dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
value = dolibarr_group.get(dolibarr_attr, None) or dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
||||||
value = value.split() if value else []
|
value = value.split() if value else []
|
||||||
values += value
|
values += value
|
||||||
else:
|
else:
|
||||||
value = dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
if dolibarr_attr.startswith("'") and dolibarr_attr.endswith("'"):
|
||||||
|
value = dolibarr_attr[1:-1]
|
||||||
|
else:
|
||||||
|
value = dolibarr_group.get(dolibarr_attr, None) or dolibarr_group['array_options'][f'options_{dolibarr_attr}']
|
||||||
if value:
|
if value:
|
||||||
values.append(value)
|
values.append(value)
|
||||||
if ldap_attr.endswith('[]'):
|
if ldap_attr.endswith('[]'):
|
||||||
ldap_attr = ldap_attr[:-2]
|
ldap_attr = ldap_attr[:-2]
|
||||||
value = values
|
value = values
|
||||||
else:
|
else:
|
||||||
value = values[0] if values else ""
|
value = "".join(map(str, values))
|
||||||
setattr(ldap_group, ldap_attr, value)
|
setattr(ldap_group, ldap_attr, value)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user