[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.1.1.4-248-g86aa11e

X2Go dev team git-admin at x2go.org
Wed Jan 8 15:31:05 CET 2014


The branch, build-baikal has been updated
       via  86aa11e89f7d667813ddadd61209466c57b843d7 (commit)
      from  476c6f3d70767ca3d4fe3fe98064427d47e46d92 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog |    1 +
 x2go/client.py   |    8 ++++++--
 x2go/registry.py |   12 ++++++++----
 3 files changed, 15 insertions(+), 6 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 3e16857..1ce0966 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -135,6 +135,7 @@ python-x2go (0.1.2.0-0~x2go1) UNRELEASED; urgency=low
       and make the notifiable via hooks.
     - Properly set setkbd value for x2gostartagent and x2goresume-session.
     - Fix local folder sharing when the master session changes during runtime.
+    - Add support for re-registering sessions after session profile changes.
   * Depend on python-xlib.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Sat, 28 Sep 2012 01:44:21 +0100
diff --git a/x2go/client.py b/x2go/client.py
index 5bbdb17..2f50823 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -2861,21 +2861,25 @@ class X2goClient(object):
 
     __update_cache_all_profiles = update_cache_all_profiles
 
-    def register_available_server_sessions_by_profile_name(self, profile_name):
+    def register_available_server_sessions_by_profile_name(self, profile_name, re_register=False):
         """\
         Register available sessions that are found on the X2Go server the profile
         of name C{profile_name} is connected to.
 
         @param profile_name: the X2Go session profile name
         @type profile_name: C{str}
+        @param re_register: re-register available sessions, needs to be done after session profile changes
+        @type re_register: C{bool}
 
         """
+        if profile_name not in self.client_connected_profiles(return_profile_names=True):
+            return
         session_list = self.list_sessions(profile_name=profile_name, 
                                           update_sessionregistry=False,
                                           register_sessions=False,
                                          )
         try:
-            self.session_registry.register_available_server_sessions(profile_name, session_list=session_list)
+            self.session_registry.register_available_server_sessions(profile_name, session_list=session_list, re_register=re_register)
         except x2go_exceptions.X2goControlSessionException:
             self.HOOK_on_control_session_death(profile_name)
             self.disconnect_profile(profile_name)
diff --git a/x2go/registry.py b/x2go/registry.py
index 87026a4..324e2c4 100644
--- a/x2go/registry.py
+++ b/x2go/registry.py
@@ -357,7 +357,7 @@ class X2goSessionRegistry(object):
 
         return True
 
-    def register_available_server_sessions(self, profile_name, session_list=None, newly_connected=False):
+    def register_available_server_sessions(self, profile_name, session_list=None, newly_connected=False, re_register=False):
         """\
         Register server-side available X2Go sessions with this L{X2goSessionRegistry} instance for a given profile name.
 
@@ -366,12 +366,16 @@ class X2goSessionRegistry(object):
         @param session_list: an optional C{X2goServerSessionList*} instance (as returned by the L{X2goClient.list_sessions()} command can
             be passed to this method.
         @type session_list: C{X2goServerSessionList*} instance
+        @param newly_connected: give a hint that the session profile got newly connected
+        @type newly_connected: C{bool}
+        @param re_register: re-register available sessions, needs to be done after changes to the session profile
+        @type re_register: C{bool}
 
         """
         if self._last_available_session_registration is not None:
             _now = time.time()
             _time_delta = _now - self._last_available_session_registration
-            if _time_delta < 2:
+            if _time_delta < 2 and not re_register:
                 self.logger('registration interval too short (%s), skipping automatic session registration...' % _time_delta, loglevel=log.loglevel_DEBUG)
                 return
             self._last_available_session_registration = _now
@@ -392,7 +396,7 @@ class X2goSessionRegistry(object):
             # (if the server name has changed, this will kick out obsolete X2goSessions)
             self.update_status(profile_name=profile_name, session_list=session_list, force_update=True)
             for session_name in session_list.keys():
-                if session_name not in _session_names and not self._skip_auto_registration:
+                if (session_name not in _session_names and not self._skip_auto_registration) or re_register:
                     server = _ctrl_session.get_server_hostname()
                     profile_id = _ctrl_session.get_profile_id()
 
@@ -421,7 +425,7 @@ class X2goSessionRegistry(object):
                     except: pass
 
                     # this if clause catches problems when x2golistsessions commands give weird results
-                    if not self.has_session_of_session_name(session_name):
+                    if not self.has_session_of_session_name(session_name) or re_register:
                         session_uuid = self.register(server, profile_id, profile_name,
                                                      session_name=session_name, virgin=False,
                                                      **kwargs


hooks/post-receive
-- 
python-x2go.git (Python X2Go Client API)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-x2go.git" (Python X2Go Client API).




More information about the x2go-commits mailing list