From 1752a9151de9b139fc334dc86b4a42e25cf64864 Mon Sep 17 00:00:00 2001 From: clerie Date: Sun, 1 May 2022 13:27:56 +0200 Subject: [PATCH] Add support for PP user --- mitel_ommclient2/client.py | 31 ++++++++++++++++++++++++++ mitel_ommclient2/messages/__init__.py | 2 ++ mitel_ommclient2/messages/getppuser.py | 27 ++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 mitel_ommclient2/messages/getppuser.py diff --git a/mitel_ommclient2/client.py b/mitel_ommclient2/client.py index 283e07a..9d484aa 100644 --- a/mitel_ommclient2/client.py +++ b/mitel_ommclient2/client.py @@ -92,6 +92,37 @@ class OMMClient2: # Determine next possible ppn next_ppn = int(pp["ppn"]) + 1 + def get_user(self, uid): + """ + Get PP user + + :param uid: User id + """ + r = self.connection.request(messages.GetPPUser(uid)) + r.raise_on_error() + if r.user is None: + return None + return r.user[0] + + def get_users(self): + """ + Get all PP users + """ + next_uid = 0 + while True: + r = self.connection.request(messages.GetPPUser(next_uid, maxRecords=20)) + try: + r.raise_on_error() + except exceptions.ENoEnt: + # No more devices to fetch + break + + # Output all found devices + for user in r.user: + yield user + + # Determine next possible ppn + next_uid = int(user["uid"]) + 1 def ping(self): """ diff --git a/mitel_ommclient2/messages/__init__.py b/mitel_ommclient2/messages/__init__.py index a243d4e..768b4bb 100644 --- a/mitel_ommclient2/messages/__init__.py +++ b/mitel_ommclient2/messages/__init__.py @@ -84,6 +84,7 @@ class Response: from .getaccount import GetAccount, GetAccountResp from .getppdev import GetPPDev, GetPPDevResp +from .getppuser import GetPPUser, GetPPUserResp from .open import Open, OpenResp from .ping import Ping, PingResp @@ -111,6 +112,7 @@ def _response_type_by_name(name): response_types = [ GetAccountResp, GetPPDevResp, + GetPPUserResp, PingResp, ] diff --git a/mitel_ommclient2/messages/getppuser.py b/mitel_ommclient2/messages/getppuser.py new file mode 100644 index 0000000..e6584da --- /dev/null +++ b/mitel_ommclient2/messages/getppuser.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +from . import Request, Response + + +class GetPPUser(Request): + def __init__(self, uid, maxRecords=None, **kwargs): + super().__init__("GetPPUser", **kwargs) + + self.attrs["uid"] = uid + + if maxRecords is not None: + self.attrs["maxRecords"] = maxRecords + + @property + def ppn(self): + return self.attrs.get("ppn") + + @property + def maxRecords(self): + return self.attrs.get("maxRecords") + + +class GetPPUserResp(Response): + @property + def user(self): + return self.childs.get("user")