Merge pull request #18 from DaanSelen/conversion

Fix #9
This commit is contained in:
Josiah Baldwin
2025-01-08 11:46:15 -08:00
committed by GitHub
2 changed files with 20 additions and 20 deletions

View File

@@ -54,11 +54,11 @@ class Device(object):
links (dict[str, ~meshctrl.types.UserLink]|None): Collection of links for the device
details (dict[str, dict]): Extra details about the device. These are not well defined, but are filled by calling :py:meth:`~meshctrl.session.Session.list_devices` with `details=True`.
'''
def __init__(self, nodeid, session, agent=None,
def __init__(self, nodeid, session, agent=None,
name=None, desc=None, description=None,
tags=None,
agct=None, created_at=None,
rname=None, computer_name=None, icon=constants.Icon.desktop,
agct=None, created_at=None,
rname=None, computer_name=None, icon=constants.Icon.desktop,
mesh=None, mtype=None, meshtype=None, groupname=None, meshname=None,
domain=None, host=None, ip=None, conn=None, connected=None,
pwr=None, powered_on=None,
@@ -96,7 +96,7 @@ class Device(object):
if not isinstance(created_at, datetime.datetime) and created_at is not None:
try:
created_at = datetime.datetime.fromtimestamp(created_at)
except OSError:
except (OSError, ValueError):
# Meshcentral returns in miliseconds, while fromtimestamp, and most of python, expects the argument in seconds. Try seconds frist, then translate from ms if it fails.
# This doesn't work for really early timestamps, but I don't expect that to be a problem here.
created_at = datetime.datetime.fromtimestamp(created_at/1000.0)
@@ -106,7 +106,7 @@ class Device(object):
if not isinstance(lastconnect, datetime.datetime) and lastconnect is not None:
try:
lastconnect = datetime.datetime.fromtimestamp(lastconnect)
except OSError:
except (OSError, ValueError):
# Meshcentral returns in miliseconds, while fromtimestamp, and most of python, expects the argument in seconds. Try seconds frist, then translate from ms if it fails.
# This doesn't work for really early timestamps, but I don't expect that to be a problem here.
lastconnect = datetime.datetime.fromtimestamp(lastconnect/1000.0)
@@ -129,7 +129,7 @@ class Device(object):
Returns:
bool: True on success, raise otherwise
Raises:
Raises:
:py:class:`~meshctrl.exceptions.ServerError`: Error text from server if there is a failure
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
@@ -147,7 +147,7 @@ class Device(object):
Returns:
bool: True on success, raise otherwise
Raises:
Raises:
:py:class:`~meshctrl.exceptions.ServerError`: Error text from server if there is a failure
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
@@ -166,7 +166,7 @@ class Device(object):
Returns:
bool: True on success, raise otherwise
Raises:
Raises:
:py:class:`~meshctrl.exceptions.ServerError`: Error text from server if there is a failure
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
@@ -183,7 +183,7 @@ class Device(object):
Returns:
~meshctrl.device.Device: Object representing the state of the device. This will be a new device, it will not update this device.
Raises:
Raises:
ValueError: `Invalid device id` if device is not found
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
@@ -205,7 +205,7 @@ class Device(object):
Returns:
bool: True if successful, raise otherwise
Raises:
Raises:
:py:class:`~meshctrl.exceptions.ServerError`: Error text from server if there is a failure
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
@@ -227,7 +227,7 @@ class Device(object):
Returns:
~meshctrl.types.RunCommandResponse: Output of command
Raises:
Raises:
:py:class:`~meshctrl.exceptions.ServerError`: Error text from server if there is a failure
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
ValueError: `Invalid device id` if device is not found
@@ -268,7 +268,7 @@ class Device(object):
Returns:
bool: True if successful
Raises:
Raises:
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
'''
@@ -286,7 +286,7 @@ class Device(object):
Returns:
bool: True if successful
Raises:
Raises:
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
'''
@@ -302,7 +302,7 @@ class Device(object):
Returns:
bool: True if successful
Raises:
Raises:
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
'''
@@ -317,7 +317,7 @@ class Device(object):
Returns:
bool: True if successful
Raises:
Raises:
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
'''
@@ -346,4 +346,4 @@ class Device(object):
return f"Device(nodeid={repr(self.nodeid)}, session={repr(self._session)}, name={repr(self.name)}, description={repr(self.description)}, computer_name={repr(self.computer_name)}, icon={repr(self.icon)}, "\
f"mesh={repr(self.mesh)}, meshtype={repr(self.meshtype)}, meshname={repr(self.meshname)}, domain={repr(self.domain)}, host={repr(self.host)}, ip={repr(self.ip)}, "\
f"tags={repr(self.tags)}, details={repr(self.details)} created_at={repr(self.created_at)} lastaddr={repr(self.lastaddr)} lastconnect={repr(self.lastconnect)} "\
f"connected={repr(self.connected)}, powered_on={repr(self.powered_on)}, os_description={repr(self.os_description)}, links={repr(self.links)}, **{repr(self._extra_props)})"
f"connected={repr(self.connected)}, powered_on={repr(self.powered_on)}, os_description={repr(self.os_description)}, links={repr(self.links)}, **{repr(self._extra_props)})"

View File

@@ -31,7 +31,7 @@ class Mesh(object):
domain (str|None): Domain on server to which device is connected.
links (dict[str, ~meshctrl.types.UserLink]|None): Collection of links for the device group
'''
def __init__(self, meshid, session, creation=None, created_at=None, name=None,
def __init__(self, meshid, session, creation=None, created_at=None, name=None,
mtype=None, meshtype=None, creatorid=None, desc=None, description=None,
domain=None, creatorname=None, links=None, **kwargs):
self.meshid = meshid
@@ -46,7 +46,7 @@ class Mesh(object):
if not isinstance(created_at, datetime.datetime) and created_at is not None:
try:
created_at = datetime.datetime.fromtimestamp(created_at)
except OSError:
except (OSError, ValueError):
# Meshcentral returns in miliseconds, while fromtimestamp, and most of python, expects the argument in seconds. Try seconds frist, then translate from ms if it fails.
# This doesn't work for really early timestamps, but I don't expect that to be a problem here.
created_at = datetime.datetime.fromtimestamp(created_at/1000.0)
@@ -83,7 +83,7 @@ class Mesh(object):
Returns:
dict[str, ~meshctrl.types.AddUsersToDeviceGroupResponse]: Object showing which were added correctly and which were not, along with their result messages. str is userid to map response.
Raises:
Raises:
:py:class:`~meshctrl.exceptions.SocketError`: Info about socket closure
asyncio.TimeoutError: Command timed out
'''
@@ -96,4 +96,4 @@ class Mesh(object):
def __repr__(self):
return f"Mesh(meshid={repr(self.meshid)}, session={repr(self._session)}, name={repr(self.name)}, description={repr(self.description)}, created_at={repr(self.created_at)}, "\
f"meshtype={repr(self.meshtype)}, domain={repr(self.domain)}, "\
f"created_at={repr(self.created_at)}, creatorid={repr(self.creatorid)}, creatorname={repr(self.creatorname)}, links={repr(self.links)}, **{repr(self._extra_props)})"
f"created_at={repr(self.created_at)}, creatorid={repr(self.creatorid)}, creatorname={repr(self.creatorname)}, links={repr(self.links)}, **{repr(self._extra_props)})"