update_ldap_attributes is a classmethod

This commit is contained in:
Éloi Rivard 2023-03-07 16:03:17 +01:00
parent c5b11d2fb3
commit 84c10f8205

View file

@ -25,7 +25,8 @@ class LDAPObject:
for name, value in kwargs.items(): for name, value in kwargs.items():
setattr(self, name, value) setattr(self, name, value)
self.update_ldap_attributes() if not self.may and not self.must:
self.update_ldap_attributes()
def __repr__(self): def __repr__(self):
rdn = getattr(self, self.rdn, "?") rdn = getattr(self, self.rdn, "?")
@ -239,15 +240,14 @@ class LDAPObject:
objects.append(obj) objects.append(obj)
return objects return objects
def update_ldap_attributes(self): @classmethod
all_object_classes = self.ldap_object_classes() def update_ldap_attributes(cls):
this_object_classes = { all_object_classes = cls.ldap_object_classes()
all_object_classes[name] for name in getattr(self, "objectClass") this_object_classes = {all_object_classes[name] for name in cls.object_class}
}
done = set() done = set()
self.may = [] cls.may = []
self.must = [] cls.must = []
while len(this_object_classes) > 0: while len(this_object_classes) > 0:
object_class = this_object_classes.pop() object_class = this_object_classes.pop()
done.add(object_class) done.add(object_class)
@ -256,11 +256,11 @@ class LDAPObject:
for ocsup in object_class.sup for ocsup in object_class.sup
if ocsup not in done if ocsup not in done
} }
self.may.extend(object_class.may) cls.may.extend(object_class.may)
self.must.extend(object_class.must) cls.must.extend(object_class.must)
self.may = list(set(self.may)) cls.may = list(set(cls.may))
self.must = list(set(self.must)) cls.must = list(set(cls.must))
def reload(self, conn=None): def reload(self, conn=None):
conn = conn or self.ldap_connection() conn = conn or self.ldap_connection()