Commit 7b3f0c71 authored by Joachim Kołodziejski's avatar Joachim Kołodziejski
Browse files

tmp_ldap.py: handle nonexistent groups

parent ee9e3df4
Loading
Loading
Loading
Loading
+10 −6
Changes for tmp_ldap.py: 10 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ def render_group_template(template: str, group: str) -> str:
    return template % {"group": ldap3.utils.conv.escape_filter_chars(group)}


def query(groups: list[str]) -> dict[str, list[dict[str, str]]]:
def query(groups: list[str]) -> dict[str, list[dict[str, str]] | None]:
    result = {}
    with ldap3.Connection(
        server=ldap3.Server(
@@ -52,8 +52,8 @@ def query(groups: list[str]) -> dict[str, list[dict[str, str]]]:
        raise_exceptions=True,
    ) as conn:
        for group in set(groups):
            result[group] = []
            for obj in conn.search(
            try:
                _, _, response, _ = conn.search(
                    search_base=render_group_template(
                        settings.LDAP_GROUP_SEARCH_BASE_TEMPLATE, group
                    ),
@@ -62,11 +62,15 @@ def query(groups: list[str]) -> dict[str, list[dict[str, str]]]:
                    ),
                    attributes=ldap3.ALL_ATTRIBUTES,
                    time_limit=settings.LDAP_TIMEOUT,
            )[2]:
                result[group].append(
                )
            except ldap3.core.exceptions.LDAPNoSuchObjectResult:
                result[group] = None
            else:
                result[group] = [
                    {
                        "name": get_ldap_attr(obj, settings.LDAP_NAME_FIELD),
                        "email": get_ldap_attr(obj, settings.LDAP_EMAIL_FIELD),
                    }
                )
                    for obj in response
                ]
    return result