Refactor describe func in model
This commit is contained in:
parent
b979002f78
commit
1b97d6d7ca
|
@ -101,6 +101,9 @@ class Entry(object):
|
|||
def __repr__(self):
|
||||
return f"<{call_if_callable(self, 'name')} {self.dn}>"
|
||||
|
||||
def __dict__(self):
|
||||
return self._dict
|
||||
|
||||
def __aiter__(self):
|
||||
return self
|
||||
|
||||
|
@ -120,9 +123,23 @@ class Entry(object):
|
|||
def dn(self):
|
||||
return "{},{}".format(inheritance(self, "qualified_name", Entry), self.base_dn)
|
||||
|
||||
@property
|
||||
def attributes(self):
|
||||
raise NotImplemented()
|
||||
|
||||
async def describe(self):
|
||||
async with self.client.connect(is_async=True) as conn:
|
||||
# This returns a list of dicts. It should always contain only one item:
|
||||
# the one we are interested.
|
||||
res = await conn.search(self.dn, 0)
|
||||
if len(res) == 0:
|
||||
return
|
||||
elif len(res) > 1:
|
||||
raise PhiUnexpectedRuntimeValue(
|
||||
"return value should be no more than one", res
|
||||
)
|
||||
res = res[0]
|
||||
res.update({"dn": self.dn, "name": self.name})
|
||||
return res
|
||||
|
||||
|
||||
|
@ -143,6 +160,7 @@ class Hackers(Entry):
|
|||
"""
|
||||
|
||||
kind = "ou"
|
||||
_name = "Hackers"
|
||||
_instances: T.Dict[str, Entry] = dict()
|
||||
|
||||
def __new__(cls, client, *args, **kwargs):
|
||||
|
@ -170,6 +188,10 @@ class Hackers(Entry):
|
|||
res = await self.get_by_attr("uid", uid)
|
||||
return res[0]
|
||||
|
||||
@property
|
||||
def attributes(self):
|
||||
return {"kind": self.kind}
|
||||
|
||||
|
||||
class Robots(Entry):
|
||||
"""
|
||||
|
@ -338,9 +360,10 @@ class Service(Robots):
|
|||
def __new__(cls, client, name, *args, **kwargs):
|
||||
return singletonize(cls, f"{name}-{id(client)}")
|
||||
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
def __init__(self, client, name, *args, **kwargs):
|
||||
super().__init__(client, *args, **kwargs)
|
||||
self._name = name
|
||||
self._entry = LDAPEntry(self.dn)
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{get_class(self).__name__}({self.name}) {self.dn}>"
|
||||
|
@ -397,9 +420,10 @@ class Group(Congregations):
|
|||
def __new__(cls, client, name, *args, **kwargs):
|
||||
return singletonize(cls, f"{name}-{id(client)}")
|
||||
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
def __init__(self, client, name, *args, **kwargs):
|
||||
super().__init__(client, *args, **kwargs)
|
||||
self._name = name
|
||||
self._entry = LDAPEntry(self.dn)
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{get_class(self).__name__}({self.name}) {self.dn}>"
|
||||
|
|
Loading…
Reference in New Issue
Block a user