Add concatenate feature + use constants
This commit is contained in:
		
							
								
								
									
										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 = []
 | 
				
			||||||
 | 
					        if dolibarr_attrs[0].startswith('GROUP__'):
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
        for dolibarr_attr in dolibarr_attrs:
 | 
					        for dolibarr_attr in dolibarr_attrs:
 | 
				
			||||||
            if dolibarr_attr.startswith('GROUP__'):
 | 
					 | 
				
			||||||
                continue
 | 
					 | 
				
			||||||
            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 = []
 | 
				
			||||||
 | 
					        if not dolibarr_attrs[0].startswith('GROUP__'):
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
        for dolibarr_attr in dolibarr_attrs:
 | 
					        for dolibarr_attr in dolibarr_attrs:
 | 
				
			||||||
            if not dolibarr_attr.startswith('GROUP__'):
 | 
					 | 
				
			||||||
                continue
 | 
					 | 
				
			||||||
            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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user