Compare commits

...

4 Commits

3 changed files with 71 additions and 10 deletions

View File

@ -3,6 +3,7 @@
from .connection import Connection from .connection import Connection
from . import exceptions from . import exceptions
from . import messages from . import messages
from . import types
class OMMClient2: class OMMClient2:
""" """
@ -152,3 +153,40 @@ class OMMClient2:
if r.errCode is None: if r.errCode is None:
return True return True
return False return False
def set_user_name(self, uid, name):
"""
Set PP user name
:param uid: User id
:param name: User name
"""
t = types.PPUserType()
t.uid = uid
t.name = name
m = messages.SetPPUser()
m.childs.user = [t]
r = self.connection.request(m)
r.raise_on_error()
if r.childs.user is None:
return None
return r.childs.user[0]
def set_user_num(self, uid, num):
"""
Set PP user number
:param uid: User id
:param num: User number
"""
t = types.PPUserType()
t.uid = uid
t.num = num
m = messages.SetPPUser()
m.childs.user = [t]
r = self.connection.request(m)
r.raise_on_error()
if r.childs.user is None:
return None
return r.childs.user[0]

View File

@ -44,7 +44,10 @@ class Message:
def __setattr__(self, name, value): def __setattr__(self, name, value):
if name in self.CHILDS.keys(): if name in self.CHILDS.keys():
if self.CHILDS[name] is not None and type(value) != self.CHILDS[name]: if not isinstance(value, list):
raise TypeError()
for v in value:
if self.CHILDS[name] is not None and type(v) != self.CHILDS[name]:
raise TypeError() raise TypeError()
self._child_dict[name] = value self._child_dict[name] = value
else: else:
@ -55,8 +58,8 @@ class Message:
self.name = name self.name = name
if not self.name: if not self.name:
self.name = self.__class__.__name__ self.name = self.__class__.__name__
self._attrs = attrs self._attrs = {} | attrs
self._childs = childs self._childs = {} | childs
self.childs = self.Childs(self.CHILDS, self._childs) self.childs = self.Childs(self.CHILDS, self._childs)
def __getattr__(self, name): def __getattr__(self, name):
@ -76,7 +79,7 @@ class Message:
object.__setattr__(self, name, value) object.__setattr__(self, name, value)
def __repr__(self): def __repr__(self):
return "{}({}, {}, {})".format(self.__class__.__name__, self.name, repr(self._attrs), repr(self._childs)) return "{}({}, {}, {})".format(self.__class__.__name__, repr(self.name), repr(self._attrs), repr(self._childs))
class Request(Message): class Request(Message):
@ -136,6 +139,7 @@ from .getppdev import GetPPDev, GetPPDevResp
from .getppuser import GetPPUser, GetPPUserResp from .getppuser import GetPPUser, GetPPUserResp
from .open import Open, OpenResp from .open import Open, OpenResp
from .ping import Ping, PingResp from .ping import Ping, PingResp
from .setppuser import SetPPUser, SetPPUserResp
def construct(request): def construct(request):
""" """
@ -149,11 +153,12 @@ def construct(request):
root.setAttribute(str(k), str(v)) root.setAttribute(str(k), str(v))
for k, v in request._childs.items(): for child_name, child_list in request._childs.items():
child = message.createElement(k) if child_list is not None:
if v is not None: for child_list_item in child_list:
for c_k, c_v in v.items(): child = message.createElement(child_name)
child.setAttribute(str(c_k), str(c_v)) for child_item_key, child_item_value in child_list_item._attrs.items():
child.setAttribute(str(child_item_key), str(child_item_value))
root.appendChild(child) root.appendChild(child)
return root.toxml() return root.toxml()

View File

@ -0,0 +1,18 @@
#!/usr/bin/env python3
from . import Request, Response, request_type, response_type
from ..types import PPUserType
@request_type
class SetPPUser(Request):
CHILDS = {
"user": PPUserType,
}
@response_type
class SetPPUserResp(Response):
CHILDS = {
"user": PPUserType,
}