The branch, twofactorauth has been updated via 58ece9e00def0c33b67b591eb075b025f59f79d7 (commit) from 84aaee3290745b91dc3629e905c3076c792d2a64 (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/backends/profiles/_file.py | 3 +- x2go/inifiles.py | 60 +++++++++++++-------------------------- x2go/log.py | 7 ++++- x2go/utils.py | 8 +++++- x2go/xserver.py | 2 +- 5 files changed, 34 insertions(+), 46 deletions(-) The diff of changes is: diff --git a/x2go/backends/profiles/_file.py b/x2go/backends/profiles/_file.py index 37e94a4..4c4ea2c 100644 --- a/x2go/backends/profiles/_file.py +++ b/x2go/backends/profiles/_file.py @@ -72,8 +72,7 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): for key, default_value in self.defaultSessionProfile.iteritems(): if not self.iniConfig.has_option(session_profile, key): self._storeValue(session_profile, key, default_value) - self._updateDataObject() - + def __call__(self, profile_id_or_name): """\ STILL UNDOCUMENTED diff --git a/x2go/inifiles.py b/x2go/inifiles.py index 2e1fbac..b20b9fc 100644 --- a/x2go/inifiles.py +++ b/x2go/inifiles.py @@ -92,6 +92,12 @@ class X2goIniFile(object): self.iniConfig = ConfigParser.SafeConfigParser() self.iniConfig.optionxform = str + for file_name in config_files: + if file_name.startswith(_current_home): + if not os.path.exists(file_name): + utils.touch_file(file_name) + break + self.logger('proposed config files are %s' % config_files, log.loglevel_INFO, ) _found_config_files = self.iniConfig.read(config_files) self.logger('config files found: %s' % _found_config_files or 'none', log.loglevel_INFO, ) @@ -104,8 +110,7 @@ class X2goIniFile(object): self.config_files = _found_config_files self._fill_defaults() - self._updateDataObject() - + def __repr__(self): result = 'X2goIniFile(' for p in dir(self): @@ -129,14 +134,13 @@ class X2goIniFile(object): @type value: C{str}, C{list}, C{bool}, ... """ - if type(value) is types.UnicodeType: - self.iniConfig.set(section,key,value) - elif type(value) is types.StringType: - self.iniConfig.set(section,key,unicode(value)) - elif type(value) is types.BooleanType: - self.iniConfig.set(section,key,unicode(int(value))) + if type(value) == type(u''): + value = value.encode(utils.get_encoding()) + + if type(value) is types.BooleanType: + self.iniConfig.set(section, key, str(int(value))) else: - self.iniConfig.set(section,key,unicode(value)) + self.iniConfig.set(section, key, str(value)) def _fill_defaults(self): """\ @@ -152,8 +156,7 @@ class X2goIniFile(object): if not self.iniConfig.has_section(section): self.iniConfig.add_section(section) self._storeValue(section, key, value) - self._updateDataObject - + def update_value(self, section, key, value): """\ Change a value for a given section and key. This method @@ -171,8 +174,7 @@ class X2goIniFile(object): self.iniConfig.add_section(section) self._storeValue(section, key, value) self.write_config = True - self._updateDataObject() - + def write(self): """\ Write the ini file modifications (SafeConfigParser object) from RAM to disk. @@ -216,6 +218,8 @@ class X2goIniFile(object): @rtype: class """ + if key_type is None: + key_type = self.get_type(section, key) if self.iniConfig.has_option(section, key): if key_type is types.BooleanType: return self.iniConfig.getboolean(section, key) @@ -228,37 +232,11 @@ class X2goIniFile(object): else: raise TypeError else: - return self.iniConfig.get(section, key) + _val = self.iniConfig.get(section, key) + return _val.decode(utils.get_encoding()) get = get_value __call__ = get_value - def _updateDataObject(self): - """\ - This routine transfers the ini file's config items into simple - object data properties of the form:: - - <X2goIniFile instance>.<section_name>.<option_name> = value - - """ - class ini_section(object): - def __str__(self): - return self.name - def __repr__(self): - return "<%s instance: %s>" % (self.__class__, self.name) - def __init__(self, name): - self.name = name - def set_option(self, option_name, value): - setattr(self, option_name.lower(), value) - - for section_name in self.iniConfig.sections(): - section = ini_section(section_name) - for option_name in self.iniConfig.options(section.name): - if section.name in self.defaultValues and option_name in self.defaultValues[section.name]: - section.set_option(option_name, self.get(section.name, option_name, self.get_type(section.name, option_name))) - else: - section.set_option(option_name, self.get(section.name, option_name)) - setattr(self, section.name.lower(), section) - @property def printable_config_file(self): """\ diff --git a/x2go/log.py b/x2go/log.py index 17ef354..7fecb99 100644 --- a/x2go/log.py +++ b/x2go/log.py @@ -23,7 +23,8 @@ X2goLogger class - flexible handling of log and debug output. __NAME__ = 'x2gologger-pylib' # modules -import os, sys +import os +import sys loglevel_NONE = 0 loglevel_ERROR = 8 @@ -38,6 +39,9 @@ loglevel_DEFAULT = loglevel_ERROR | loglevel_WARN | loglevel_NOTICE Default loglevel of X2goLogger objects is: NOTICE & WARN & ERROR """ +# Python X2go modules +import utils + class X2goLogger(object): """\ A simple logger class, that is used by all Python X2go classes. @@ -89,6 +93,7 @@ class X2goLogger(object): if loglevel & self.loglevel: msg = msg.replace('\n', ' ') + msg = msg.encode(utils.get_encoding()) if self.tag is not None: self.destination.write('%s[%s] (%s) %s: %s\n' % (self.name, self.progpid, tag, self._loglevel_NAMES[loglevel].upper(), msg)) diff --git a/x2go/utils.py b/x2go/utils.py index 5624928..b45da47 100644 --- a/x2go/utils.py +++ b/x2go/utils.py @@ -25,6 +25,7 @@ __NAME__ = 'x2goutils-pylib' import sys import os +import locale import re import types import copy @@ -290,4 +291,9 @@ def detect_unused_port(bind_address='', preferred_port=None): ipaddr, port = sock.getsockname() return port - +def get_encoding(): + try: + encoding = locale.getdefaultlocale()[1] + except: + encoding = sys.getdefaultencoding() + return encoding diff --git a/x2go/xserver.py b/x2go/xserver.py index 850dcd7..bd31aa3 100644 --- a/x2go/xserver.py +++ b/x2go/xserver.py @@ -87,7 +87,7 @@ class X2goClientXConfig(inifiles.X2goIniFile): STILL UNDOCUMENTED """ - return self.xservers.known_xservers + return self.get_value('XServers', 'known_xservers') @property def installed_xservers(self): 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).