def valid_base_dn(base_dn: str) -> None: for att in ['o', 'dc', 'ou']: if base_dn.startswith(att + '='): break else: raise ValueError('La racine doit débuter par une organisation (o=), une composante du domaine (dc=) ou une unité organisationnelle (ou=)') def calc_ldapclient_base_dn(ldap_base_dn: str, family_name: str, accounts: bool=False, ) -> str: base = f'ou=accounts,{ldap_base_dn}' if accounts: return base if not family_name: return f'ou=users,{base}' families = f'ou=families,{base}' if family_name != '-': return f'ou={family_name},{families}' return families