This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository python-x2go. from f308782 test if DISPLAY is accessible before detecting the local desktop geometry new 7cb2ca7 Handle duplicate profile names gracefully (i.e. append a " (1)", " (2)", ... to the session profile name). (Fixes: #500). The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 2 ++ x2go/backends/profiles/base.py | 21 +++++++++++++++++++-- x2go/backends/profiles/file.py | 8 +++++++- 3 files changed, 28 insertions(+), 3 deletions(-) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit 7cb2ca7325a2d46142d6a0e380ad89f164792307 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Sep 10 12:04:15 2014 +0200 Handle duplicate profile names gracefully (i.e. append a " (1)", " (2)", ... to the session profile name). (Fixes: #500). --- debian/changelog | 2 ++ x2go/backends/profiles/base.py | 21 +++++++++++++++++++-- x2go/backends/profiles/file.py | 8 +++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index e437449..c8be003 100644 --- a/debian/changelog +++ b/debian/changelog @@ -90,6 +90,8 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - Clean up terminal sessions properly when the clean_sessions() method of the control session has got called. - Don't use compression on TeKi sshfs mounts. + - Handle duplicate profile names gracefully (i.e. append a " (1)", + " (2)", ... to the session profile name). (Fixes: #500). * debian/control: + Add dependencies: python-requests, python-simplejson. * python-x2go.spec: diff --git a/x2go/backends/profiles/base.py b/x2go/backends/profiles/base.py index c19571f..2855d09 100644 --- a/x2go/backends/profiles/base.py +++ b/x2go/backends/profiles/base.py @@ -124,6 +124,24 @@ class X2GoSessionProfiles(): """ self.session_profiles = self. _populate_session_profiles() + # scan for duplicate profile names and handle them... + scan_profile_names = {} + for profile_id in self.session_profiles.keys(): + profile_name = self.to_profile_name(profile_id) + if profile_name not in scan_profile_names.keys(): + scan_profile_names[profile_name] = [profile_id] + else: + scan_profile_names[profile_name].append(profile_id) + _duplicates = {} + for profile_name in scan_profile_names.keys(): + if len(scan_profile_names[profile_name]) > 1: + _duplicates[profile_name] = scan_profile_names[profile_name] + for profile_name in _duplicates.keys(): + i = 1 + for profile_id in _duplicates[profile_name]: + self.update_value(None, 'name', '{name} ({i})'.format(name=profile_name, i=i), profile_id=profile_id) + i += 1 + def _populate_session_profiles(self): """\ Inherit from this class and provide the backend specific way of loading / @@ -558,10 +576,9 @@ class X2GoSessionProfiles(): raise X2GoProfileException('profile name for profile id %s must not be empty' % profile_id) else: if profile_name != current_profile_name: - try: del self._cached_profile_ids[profile_id] - except KeyError: pass if profile_name in self.profile_names: raise X2GoProfileException('a profile of name ,,%s\'\' already exists' % profile_name) + self._cached_profile_ids[profile_id] = profile_name if option == 'export' and type(value) == types.DictType: _strvalue = '"' diff --git a/x2go/backends/profiles/file.py b/x2go/backends/profiles/file.py index 39e7da1..913267d 100644 --- a/x2go/backends/profiles/file.py +++ b/x2go/backends/profiles/file.py @@ -85,13 +85,16 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile): """ session_profiles = [ p for p in self.iniConfig.sections() if p not in self._non_profile_sections and p != 'none' ] + _session_profiles_dict = {} for session_profile in session_profiles: for key, default_value in self.defaultSessionProfile.iteritems(): if not self.iniConfig.has_option(session_profile, key): self._storeValue(session_profile, key, default_value) # update cached meta type session profile information self.get_profile_metatype(session_profile) - return session_profiles + _session_profiles_dict[session_profile] = self.get_profile_config(session_profile) + + return _session_profiles_dict def _is_mutable(self, profile_id): return True @@ -105,11 +108,14 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile): def _delete_profile(self, profile_id): self.iniConfig.remove_section(profile_id) + try: del self.session_profiles[profile_id] + except KeyError: pass def _update_value(self, profile_id, option, value): if option == 'host': value = ','.join(value) self._X2GoIniFile__update_value(profile_id, option, value) + self.session_profiles[profile_id][option] = value def _get_profile_parameter(self, profile_id, option, key_type): return self.get(profile_id, option, key_type) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git