[X2Go-Commits] [python-x2go] 02/09: X2GoSessionInfo: Handle non-initialized X2GoSessionInfo instance more gracefully.
git-admin at x2go.org
git-admin at x2go.org
Fri Jul 19 19:42:45 CEST 2019
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository python-x2go.
commit cf364ae1a41c63ff7f980ff818d261de7c599244
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Fri Jul 19 17:06:16 2019 +0200
X2GoSessionInfo: Handle non-initialized X2GoSessionInfo instance more gracefully.
---
debian/changelog | 2 ++
x2go/backends/info/plain.py | 77 +++++++++++++++++++++++++++++++--------------
2 files changed, 55 insertions(+), 24 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index cb518ec..03b997e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ python-x2go (0.6.0.3-0x2go1) UNRELEASED; urgency=medium
[ Mike Gabriel ]
* New upstream version (0.6.0.3):
- X2GoSessionInfo: Drop debug print command.
+ - X2GoSessionInfo: Handle non-initialized X2GoSessionInfo instance
+ more gracefully.
-- X2Go Release Manager <git-admin at x2go.org> Sat, 01 Dec 2018 02:16:45 +0100
diff --git a/x2go/backends/info/plain.py b/x2go/backends/info/plain.py
index 222cfff..c2be45f 100644
--- a/x2go/backends/info/plain.py
+++ b/x2go/backends/info/plain.py
@@ -42,10 +42,14 @@ class X2GoServerSessionInfo(object):
that is retrieved from the connected X2Go server on
``X2GoTerminalSession.start()`` resp. ``X2GoTerminalSession.resume()``.
-
"""
+ def __init__(self):
+ self.initialized = False
+ self.protected = False
+
def __str__(self):
return self.name
+
def __repr__(self):
result = 'X2GoServerSessionInfo('
for p in dir(self):
@@ -78,6 +82,7 @@ class X2GoServerSessionInfo(object):
self.username = l[11]
self.sshfs_port = int(l[13])
self.local_container = ''
+ self.initialized = True
except IndexError as e:
# DEBUGGING CODE
raise e
@@ -102,10 +107,13 @@ class X2GoServerSessionInfo(object):
:returns: returns ``True`` if this session is a published applications provider
- :rtype: ``bool``
+ :rtype: ``bool`` or ``None`` (if not initialized)
"""
- return bool(re.match('.*_stRPUBLISHED_.*', self.name))
+ if self.initialized:
+ return bool(re.match('.*_stRPUBLISHED_.*', self.name))
+ else:
+ return None
def is_running(self):
"""\
@@ -114,10 +122,13 @@ class X2GoServerSessionInfo(object):
:returns: ``True`` if the session is running, ``False`` otherwise
- :rtype: ``bool``
+ :rtype: ``bool`` or ``None`` (if not initialized)
"""
- return self.status == 'R'
+ if self.initialized:
+ return self.status == 'R'
+ else:
+ return None
def get_session_type(self):
"""\
@@ -126,14 +137,17 @@ class X2GoServerSessionInfo(object):
:returns: session type
- :rtype: ``str``
+ :rtype: ``str`` or ``None`` (if not initialized)
"""
- cmd = self.name.split('_')[1]
- session_type = cmd[2]
- if session_type == 'R' and self.is_published_applications_provider():
- session_type = 'P'
- return session_type
+ if self.initialized:
+ cmd = self.name.split('_')[1]
+ session_type = cmd[2]
+ if session_type == 'R' and self.is_published_applications_provider():
+ session_type = 'P'
+ return session_type
+ else:
+ return None
def get_share_mode(self):
"""\
@@ -142,15 +156,18 @@ class X2GoServerSessionInfo(object):
:returns: share mode (0: view-only, 1: full access), ``None`` when used for non-desktop-sharing sessions
- :rtype: ``str``
+ :rtype: ``str`` or ``None`` (if not initialized)
"""
- share_mode = None
- cmd = self.name.split('_')[1]
- session_type = cmd[2]
- if session_type == 'S':
- share_mode = cmd[3]
- return share_mode
+ if self.initialized:
+ share_mode = None
+ cmd = self.name.split('_')[1]
+ session_type = cmd[2]
+ if session_type == 'S':
+ share_mode = cmd[3]
+ return share_mode
+ else:
+ return None
def is_suspended(self):
"""\
@@ -159,10 +176,13 @@ class X2GoServerSessionInfo(object):
:returns: ``True`` if the session is suspended, ``False`` otherwise
- :rtype: ``bool``
+ :rtype: ``bool`` or ``None`` (if not initialized)
"""
- return self.status == 'S'
+ if self.initialized:
+ return self.status == 'S'
+ else:
+ return None
def is_desktop_session(self):
"""\
@@ -171,10 +191,13 @@ class X2GoServerSessionInfo(object):
:returns: ``True`` if this session is a desktop session, ``False`` otherwise
- :rtype: ``bool``
+ :rtype: ``bool`` or ``None`` (if not initialized)
"""
- return self.get_session_type() == 'D'
+ if self.initialized:
+ return self.get_session_type() == 'D'
+ else:
+ return None
def _parse_x2gostartagent_output(self, x2go_output):
"""\
@@ -202,6 +225,7 @@ class X2GoServerSessionInfo(object):
self.status = 'R'
self.local_container = ''
self.remote_container = ''
+ self.initialized = True
except IndexError as e:
# DEBUGGING CODE
raise e
@@ -242,6 +266,7 @@ class X2GoServerSessionInfo(object):
self.hostname = hostname
self.local_container = local_container
self.remote_container = remote_container
+ self.initialized = True
def protect(self):
"""\
@@ -274,10 +299,13 @@ class X2GoServerSessionInfo(object):
:returns: session status
- :rtype: ``str``
+ :rtype: ``str`` or ``None`` (if not initalized)
"""
- return self.status
+ if self.initialized:
+ return self.status
+ else:
+ return None
def clear(self):
"""\
@@ -302,6 +330,7 @@ class X2GoServerSessionInfo(object):
self.local_container = ''
self.remote_container = ''
self.protected = False
+ self.initialized = False
def update(self, session_info):
"""\
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
More information about the x2go-commits
mailing list