pyceo/ceod/model/UWLDAPRecord.py

63 lines
1.5 KiB
Python
Raw Normal View History

2021-08-15 01:04:49 -04:00
from typing import List, Union
2021-07-23 20:08:22 -04:00
2021-08-15 01:04:49 -04:00
import ldap3
2021-07-23 20:08:22 -04:00
class UWLDAPRecord:
"""Represents a record from the UW LDAP."""
2021-08-15 01:04:49 -04:00
ldap_attributes = [
'uid',
'mailLocalAddress',
'ou', # program
'cn',
'sn',
'givenName',
]
2021-07-23 20:08:22 -04:00
def __init__(
self,
uid: str,
mail_local_addresses: List[str],
2021-08-03 10:09:07 -04:00
program: Union[str, None] = None,
cn: Union[str, None] = None,
sn: Union[str, None] = None,
given_name: Union[str, None] = None,
2021-07-23 20:08:22 -04:00
):
self.uid = uid
self.mail_local_addresses = mail_local_addresses
2021-08-03 10:09:07 -04:00
self.program = program
self.cn = cn
self.sn = sn
self.given_name = given_name
2021-07-23 20:08:22 -04:00
@staticmethod
2021-08-15 01:04:49 -04:00
def deserialize_from_ldap(entry: ldap3.Entry):
2021-07-23 20:08:22 -04:00
"""
2021-08-15 01:04:49 -04:00
Deserializes a dict returned from LDAP into a
2021-07-23 20:08:22 -04:00
UWLDAPRecord.
"""
return UWLDAPRecord(
2021-08-15 01:04:49 -04:00
uid=entry.uid.value,
mail_local_addresses=entry.mailLocalAddress.values,
program=entry.ou.value,
cn=entry.cn.value,
sn=entry.sn.value,
given_name=entry.givenName.value,
2021-07-23 20:08:22 -04:00
)
2021-08-02 23:20:11 -04:00
def to_dict(self):
2021-08-03 10:09:07 -04:00
data = {
2021-08-02 23:20:11 -04:00
'uid': self.uid,
'mail_local_addresses': self.mail_local_addresses,
}
2021-08-03 10:09:07 -04:00
if self.program:
data['program'] = self.program
if self.cn:
data['cn'] = self.cn
if self.sn:
data['sn'] = self.sn
if self.given_name:
data['given_name'] = self.given_name
return data