forked from Github-Mirrors/canaille
update_ldap_attributes is a classmethod
This commit is contained in:
parent
c5b11d2fb3
commit
84c10f8205
1 changed files with 12 additions and 12 deletions
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue