[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: 0.0.44.2-10-g8060237

X2Go dev team git-admin at x2go.org
Tue Jan 7 16:20:33 CET 2014


The branch, brokerclient has been updated
       via  80602371c96597c33b1699903532beebff716e2a (commit)
      from  565d53c772448646f065bca08f3ab0b96cab1a30 (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:
 x2go/utils.py |  220 +++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 142 insertions(+), 78 deletions(-)

The diff of changes is:
diff --git a/x2go/utils.py b/x2go/utils.py
index f60c0ee..8de5cc6 100644
--- a/x2go/utils.py
+++ b/x2go/utils.py
@@ -52,8 +52,8 @@ def is_in_nx3packmethods(method):
 
 def find_session_line_in_x2golistsessions(session_name, x2go_stdout):
     """\
-    Return the X2go session meta info as output by x2golistsessions command
-    for session C{session_name}.
+    Return the X2go session meta information as returned by the 
+    C{x2golistsessions} server command for session C{session_name}.
 
     """
     sessions = stdout.read().split("\n")
@@ -69,7 +69,7 @@ def find_session_line_in_x2golistsessions(session_name, x2go_stdout):
 def slugify(value):
     """\
     Normalizes string, converts to lowercase, removes non-alpha characters,
-    and converts spaces to hyphens.
+    converts spaces to hyphens and replaces round brackets by pointed brackets.
 
     """
     import unicodedata
@@ -82,6 +82,7 @@ def slugify(value):
 def _genSessionProfileId():
     """\
     Generate a session profile ID as used in x2goclient's sessions config file.
+
     """
     import datetime
     return datetime.datetime.utcnow().strftime('%Y%m%d%H%m%S%f')
@@ -115,16 +116,21 @@ def _checkSessionProfileDefaults(defaults):
 
 
 def _convert_SessionProfileOptions_2_SessionParams(_options):
+    """\
+    Convert session profile options as used in x2goclient's sessions file to
+    Python X2go session parameters.
 
-        _params = copy.deepcopy(_options)
+    """
 
-        # get rid of unknown session profile options
-        _known_options = _X2GO_SESSIONPROFILE_DEFAULTS.keys()
-        for p in _params.keys():
-            if p not in _known_options:
-                del _params[p]
+    _params = copy.deepcopy(_options)
 
-        _rename_dict = {
+    # get rid of unknown session profile options
+    _known_options = _X2GO_SESSIONPROFILE_DEFAULTS.keys()
+    for p in _params.keys():
+        if p not in _known_options:
+            del _params[p]
+
+    _rename_dict = {
             'host': 'server',
             'user': 'username',
             'soundsystem': 'snd_system',
@@ -153,73 +159,72 @@ def _convert_SessionProfileOptions_2_SessionParams(_options):
             'sshproxyuser': 'sshproxy_user',
             'sshproxykeyfile': 'sshproxy_key_filename',
             'sshproxytunnel': 'sshproxy_tunnel',
-
-        }
-        _speed_dict = {
+    }
+    _speed_dict = {
             '0': 'modem',
             '1': 'isdn',
             '2': 'adsl',
             '3': 'wan',
             '4': 'lan',
-        }
-
-        for opt, val in _options.iteritems():
-
-            # rename options if necessary
-            if opt in _rename_dict.keys():
-                del _params[opt]
-                opt = _rename_dict[opt]
-                _params[opt] = val
-
-            # translate integer values for connection speed to readable strings
-            if opt == 'link':
-                val = str(val).lower()
-                if val in _speed_dict.keys():
-                    val = _speed_dict[val]
-                val = val.lower()
-                _params['link'] = val
-
-            # share_local_folders is a list
-            if opt in ('share_local_folders', 'mimebox_extensions'):
-                if type(val) is types.StringType:
-                    if val:
-                        _params[opt] = val.split(',')
-                    else:
-                        _params[opt] = []
-
-        # append value for quality to value for pack method
-        if _params['quality']:
-            _params['pack'] = '%s-%s' % (_params['pack'], _params['quality'])
-            del _params['quality']
-
-        del _params['fstunnel']
-
-        if _params.has_key('share_local_folders'):
-            _params['share_local_folders'] = [ f for f in _params['share_local_folders'].split(',') if f ]
-
-        if not _options['fullscreen']:
-            _params['geometry'] = '%sx%s' % (_options['width'], _options['height'])
-        else:
-            _params['geometry'] = 'fullscreen'
-        del _params['width']
-        del _params['height']
-        del _params['fullscreen']
-
-        if not _options['sound']:
-            snd_system = 'none'
-        del _params['sound']
-
-        if _options['rootless']:
-            _params['session_type'] = 'application'
-        else:
-            _params['session_type'] = 'desktop'
-        del _params['rootless']
-
-        if _params['mimebox_action'] not in _X2GO_MIMEBOX_ACTIONS.keys():
-            _params['mimebox_action'] = 'OPEN'
-
-        # currently known but ignored in Python X2go
-        _ignored_options = [
+    }
+
+    for opt, val in _options.iteritems():
+
+        # rename options if necessary
+        if opt in _rename_dict.keys():
+            del _params[opt]
+            opt = _rename_dict[opt]
+            _params[opt] = val
+
+        # translate integer values for connection speed to readable strings
+        if opt == 'link':
+            val = str(val).lower()
+            if val in _speed_dict.keys():
+                val = _speed_dict[val]
+            val = val.lower()
+            _params['link'] = val
+
+        # share_local_folders is a list
+        if opt in ('share_local_folders', 'mimebox_extensions'):
+            if type(val) is types.StringType:
+                if val:
+                    _params[opt] = val.split(',')
+                else:
+                    _params[opt] = []
+
+    # append value for quality to value for pack method
+    if _params['quality']:
+        _params['pack'] = '%s-%s' % (_params['pack'], _params['quality'])
+        del _params['quality']
+
+    del _params['fstunnel']
+
+    if _params.has_key('share_local_folders'):
+        _params['share_local_folders'] = [ f for f in _params['share_local_folders'].split(',') if f ]
+
+    if not _options['fullscreen']:
+        _params['geometry'] = '%sx%s' % (_options['width'], _options['height'])
+    else:
+        _params['geometry'] = 'fullscreen'
+    del _params['width']
+    del _params['height']
+    del _params['fullscreen']
+
+    if not _options['sound']:
+        snd_system = 'none'
+    del _params['sound']
+
+    if _options['rootless']:
+        _params['session_type'] = 'application'
+    else:
+        _params['session_type'] = 'desktop'
+    del _params['rootless']
+
+    if _params['mimebox_action'] not in _X2GO_MIMEBOX_ACTIONS.keys():
+        _params['mimebox_action'] = 'OPEN'
+
+    # currently known but ignored in Python X2go
+    _ignored_options = [
             'dpi',
             'setdpi',
             'usekbd',
@@ -228,14 +233,18 @@ def _convert_SessionProfileOptions_2_SessionParams(_options):
             'defsndport',
             'icon',
             'applications',
-        ]
-        for i in _ignored_options:
-            del _params[i]
+    ]
+    for i in _ignored_options:
+        del _params[i]
+
+    return _params
 
-        return _params
 
 def session_names_by_timestamp(session_infos):
+    """\
+    Sorts session profile names by their timestamp (as used in the file format's section name).
 
+    """
     session_names = session_infos.keys()
     sortable_session_names = [ '%s|%s' % (session_name.split('-')[2].split('_')[0], session_name) for session_name in session_names ]
     sortable_session_names.sort()
@@ -243,7 +252,14 @@ def session_names_by_timestamp(session_infos):
 
 
 def touch_file(filename, mode='a'):
+    """\
+    Imitates the behaviour of the GNU/touch command.
 
+    @param filename: name of the file to touch
+    @type filename: C{str}
+    @param mode: the file mode (as used for Python file objects)
+    @type mode: C{str}
+    """
     if not os.path.isdir(os.path.dirname(filename)):
         os.makedirs(os.path.dirname(filename), mode=00700)
     f = open(filename, mode=mode)
@@ -251,6 +267,15 @@ def touch_file(filename, mode='a'):
 
 
 def unique(seq):
+    """\
+    Imitates the behaviour of the GNU/uniq command.
+
+    @param seq: a list/sequence containing consecutive duplicates.
+    @type seq: C{list}
+
+    @return: list that has been clean up from the consecutive duplicates
+    @rtype: C{list}
+    """
     # order preserving
     noDupes = []
     [noDupes.append(i) for i in seq if not noDupes.count(i)]
@@ -258,6 +283,11 @@ def unique(seq):
 
 
 def known_encodings():
+    """\
+    Render a list of all-known-to-Python character encodings (including 
+    all known aliases)
+
+    """
     from encodings.aliases import aliases
     _raw_encname_list = []
     _raw_encname_list.extend(aliases.keys())
@@ -273,17 +303,36 @@ def known_encodings():
     return _encname_list
 
 
-def patiently_remove_file(_dir, _file):
+def patiently_remove_file(dirname, filename):
+    """\
+    Try to remove a file, wait for unlocking, remove it once removing is possible...
+
+    @param dirname: directory name the file is in
+    @type dirname: C{str}
+    @param filename: name of the file to be removed
+    @type filename: C{str}
+    """
     _not_removed = True
     while _not_removed:
         try:
-            os.remove(os.path.join(_dir, _file))
+            os.remove(os.path.join(dirname, filename))
             _not_removed = False
         except:
             # file is probably locked
             gevent.sleep(5)
 
 def detect_unused_port(bind_address='', preferred_port=None):
+    """\
+    Detect an unused IP socket.
+
+    @param bind_address: IP address to bind to
+    @type bind_address: C{str}
+    @param preferred_port: IP socket port that shall be tried first for availability
+    @type preferred_port: C{str}
+
+    @return: free local IP socket port that can be used for binding
+    @rtype: C{str}
+    """
 
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
     try:
@@ -298,6 +347,12 @@ def detect_unused_port(bind_address='', preferred_port=None):
     return port
 
 def get_encoding():
+    """\
+    Detect systems default character encoding.
+
+    @return: The system's local character encoding.
+    @rtype: C{str}
+    """
     try:
         encoding = locale.getdefaultlocale()[1]
     except:
@@ -305,4 +360,13 @@ def get_encoding():
     return encoding
 
 def is_abs_path(path):
+    """\
+    Test if a given path is an absolute path name.
+
+    @param path: test this path for absolutism...
+    @type path: C{str}
+
+    @return: Returns C{true} if path is an absolute path name
+    @rtype: C{bool}
+    """
     return bool((path.startswith('/') or re.match('^[%s]\:\\\\' % string.ascii_letters, path)))


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